-2

私のPHPは次のとおりです。

<?php
$str = '{
"name": "10.000000,106.000000",
"Status": {
"code": 200,
"request": "geocode"
 },
   "Apps": [ {
"Thread1": 1,
"Thread2": 1   
"Thread3": 1
"Thread4": 1
"Thread5": 1
"Thread6": 1
"Thread7": 1
} ]
}';
echo $str;
?>

「Apps」配列を取得しようとすると、次の例外が発生します。

Exception: Expected a ',' or '}' at character 165 of {
"name": "10.000000,106.000000",
"Status": {
"code": 200,
"request": "geocode"
},
"Apps": [ {
 "Thread1": 1,
 "Thread2": 1   
"Thread3": 1
"Thread4": 1
"Thread5": 1
"Thread6": 1
"Thread7": 1
} ]
}

JSONArrayを指定する際に私が間違っているところを誰かが助けて/指摘できますか?ありがとう。

4

5 に答える 5

0

「ThreadX」の後にカンマなし: 1 ?

これを確認してください:http://jsonlint.com/

于 2013-03-01T11:53:17.243 に答える
0

THREAD2 ... THREAD6 ステートメントの後ろのコンマを忘れたようです。

http://jsonlint.com/を使用して確認してください。

于 2013-03-01T11:54:56.037 に答える
0

,試してみてください:スレッド2の後に忘れました...など。

<?php
$str = '{
"name": "10.000000,106.000000",
"Status": {
"code": 200,
"request": "geocode"
 },
   "Apps": [ {
"Thread1": 1,
"Thread2": 1,   
"Thread3": 1,
"Thread4": 1,
"Thread5": 1,
"Thread6": 1,
"Thread7": 1
} ]
}';

$arr = json_decode($str);

echo "<pre>";
print_r($arr);

?>
于 2013-03-01T11:55:06.570 に答える
0

文字列を含む JSON を手動で作成しないでください。これは悪い考えです。なぜなら、JSON 形式は簡単に破ることができ (あなたが持っているように)、引用符を適切にエスケープする必要があるからです。代わりに、PHP 構造でデータを構築してjson_encode()から、実際の JSON 文字列を作成するために使用する必要があります。

$array = array(
    'name' => '10.000000,106.000000',
    'Status' => array(
        'code' => 200,
        'request' => 'geocode'
    ),
    'Apps' => array(
        array(
            'Thread1' => 1,
            'Thread2' => 1,
            'Thread3' => 1,
            'Thread4' => 1,
            'Thread5' => 1,
            'Thread6' => 1,
            'Thread7' => 1
        )
    )
);

echo json_encode($array);
于 2013-03-01T12:06:43.057 に答える
0
<?php

$str = '{
"name": "10.000000,106.000000",
"Status": {
"code": 200,
"request": "geocode"
 },
   "Apps": [ {
"Thread1": 1,
"Thread2": 1,   
"Thread3": 1,
"Thread4": 1,
"Thread5": 1,
"Thread6": 1,
"Thread7": 1
} ]
}';
echo "<pre>";
print_r(json_decode($str,true));
echo "<pre/>"; 
?>

出力:

Array
(
    [name] => 10.000000,106.000000
    [Status] => Array
        (
            [code] => 200
            [request] => geocode
        )

    [Apps] => Array
        (
            [0] => Array
                (
                    [Thread1] => 1
                    [Thread2] => 1
                    [Thread3] => 1
                    [Thread4] => 1
                    [Thread5] => 1
                    [Thread6] => 1
                    [Thread7] => 1
                )

        )

)
于 2013-03-01T12:07:29.450 に答える