0

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

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

我最终得到

{"showtime":{"Parkne":"1348109940"}}

而不是

{"showtime":{Parkne:"1348109940"}}

并且 parse 抱怨这是一个对象而不是数组,因此不会接受它。

作为

{"showtime":{"Parkne":"1348109940"}}

是一个 JSON 对象 ( key = a string)

有没有办法做到这一点json_encode?或者有什么解决办法?

4

4 回答 4

6

这就是 JSON 规范:必须引用对象键。虽然您的第一个未引用版本是有效的 Javascript,但引用版本也是如此,并且两者在任何 Javascript 引擎中的解析方式相同。但在 JSON 中,必须引用键。http://json.org


跟进:

展示你如何定义你的数组,除非你上面的样本是你的数组。这一切都取决于您如何定义您正在编码的 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
于 2012-08-31T18:47:57.577 回答
2

盲目射击...我的印象是您的 PHP 数据结构不是您想要开始的。你可能有这个:

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

...实际上需要这个:

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

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

于 2012-08-31T18:56:13.387 回答
0

听起来您需要获取单个对象并将其包装在数组中。

尝试这个:

// 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);
于 2012-08-31T19:00:32.620 回答
0

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

 $array=();
 $json = json_encode($array);
 echo $json;
于 2012-08-31T18:56:26.503 回答