PHP json_编码问题

PHP json_编码问题,php,javascript,json,parse-platform,Php,Javascript,Json,Parse Platform,我有一堆值和一个PHP数组,我需要将其转换为JSON值,以便通过CURL发布到parse.com 问题是PHP数组被转换为JSON对象(字符串作为键和值,而字符串只是值) 我最终得到了 {"showtime":{"Parkne":"1348109940"}} 不如 {"showtime":{Parkne:"1348109940"}} parse抱怨这是一个对象而不是数组,因此不会接受它 作为 是JSON对象(key=string) 使用json\u encode是否还有其他方法可以做到这一点

我有一堆值和一个PHP数组,我需要将其转换为JSON值,以便通过CURL发布到parse.com

问题是PHP数组被转换为JSON对象(字符串作为键和值,而字符串只是值)

我最终得到了

{"showtime":{"Parkne":"1348109940"}}
不如

{"showtime":{Parkne:"1348109940"}}
parse抱怨这是一个对象而不是数组,因此不会接受它

作为

是JSON对象(
key=string


使用
json\u encode
是否还有其他方法可以做到这一点?或者某种解决方案?

这就是JSON规范:必须引用对象键。虽然您的第一个无引号的版本是有效的Javascript,但有引号的版本也是有效的,并且两者在任何Javascript引擎中都将进行相同的解析。但在JSON中,键必须被引用


后续行动:

显示如何定义数组,除非上面的示例是数组。这一切都归结于如何定义正在编码的PHP结构

// plain array with implicit numeric keying
php > $arr = array('hello', 'there');
php > echo json_encode($arr);
["hello","there"]   <--- array

// array with string keys, aka 'object' in json/javascript
php > $arr2 = array('hello' => 'there');
php > echo json_encode($arr2);
{"hello":"there"} <-- object

// array with explicit numeric keying
php > $arr3 = array(0 => 'hello', 1 => 'there');
php > echo json_encode($arr3);
["hello","there"]  <-- array

// array with mixed implicit/explicit numeric keying
php > $arr4 = array('hello', 1 => 'there');
php > echo json_encode($arr4);
["hello","there"] <-- array

// array with mixed numeric/string keying
php > $arr5 = array('hello' => 'there', 1 => 'foo');
php > echo json_encode($arr5);
{"hello":"there","1":"foo"}   <--object
//带有隐式数字键控的普通数组
php>$arr=array('hello','there');
php>echo json_encode($arr);
[“你好”,“那里”]$arr2=array('hello'=>'there');
php>echo json_编码($arr2);
{“hello”:“there”}$arr3=array(0=>'hello',1=>'there');
php>echo json_编码($arr3);
[“你好”,“那里”]$arr4=array('hello',1=>'there');
php>echo json_编码($arr4);
[“你好”,“那里”]$arr5=array('hello'=>'there',1=>'foo');
php>echo json_编码($arr5);

{“你好”:“那里”,“1”:“福”}盲射。。。我的印象是,您的PHP数据结构不是您想要开始的。你可能有这样的想法:

$data = array(
    'showtime' => array(
        'Parkne' => '1348109940'
    )
);
。。。实际上,我需要这个:

$data = array(
    array(
        'showtime' => array(
            'Parkne' => '1348109940'
        )
    )
);

请随意编辑问题并提供预期输出的示例。

您可以使用JSON_encode将数组转换为JSON 假设你的数组不是空的,你可以这样做

 $array=();
 $json = json_encode($array);
 echo $json;

听起来您需要将单个对象包装成一个数组

试试这个:

// Generate this however you normally would
$vals  = array('showtime' => array("Parkne" => "1348109940"));

$o = array(); // Wrap it up ...
$o[] = $vals; // ... in a regular array

$post_me = json_encode($o);

那为什么Parse.com抱怨我给它发送的是一个对象而不是数组呢?因为JS中的数组是严格数字键控的。您正在发送一个字符串键,这使它成为一个对象。同样,
{}
在JS中表示对象。阵列使用
[]
。您的
[{}]
注释示例是一个数组,它有一个元素:一个key:value为park lane/111的对象。“不能卷曲”是什么意思?好吧,那么为什么json_使用{}编码我的PHP数组呢?如何让它使用[]?如果我手动发布
[{“Parkne”:“111”}]
,它工作正常。如果我使用PHP json_encode,它会返回
{“Parkne”:“111”}
,我会得到一个错误。但我不能只是将[]添加到它,因为这样它就变成了一个字符串+\u+。。。阿尔瓦罗·G·维卡里奥的回答最终解决了我的问题。我完全错了,事实上是我的错。谢谢你的帮助!
// Generate this however you normally would
$vals  = array('showtime' => array("Parkne" => "1348109940"));

$o = array(); // Wrap it up ...
$o[] = $vals; // ... in a regular array

$post_me = json_encode($o);