0

たくさんの値とPHP配列があり、CURLを介してparse.comに投稿するためにJSON値に変換する必要があります

問題は、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

配列が空でない場合は、json_encodeを使用して配列をJSONに変換できます。このように実行できます。

 $array=();
 $json = json_encode($array);
 echo $json;
于 2012-08-31T18:56:26.503 に答える
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 に答える