2016-09-22 19 views
1

JSONファイルからPHP配列を読み込んでエコーして、ajaxの情報をjavascriptで取得し、javascriptの配列をJSONオブジェクトの配列PHPでJSONファイルを正しく読み取ることができない

JSONファイルの外観は次のとおりです。ここで

[["{\"id\":1474541876849,\"name\":\"D\",\"price\":\"12\"}"],["{\"id\":1474541880521,\"name\":\"DD\",\"price\":\"12\"}"],["{\"id\":1474541897705,\"name\":\"DDDGG\",\"price\":\"124\"}"],["{\"id\":1474541901141,\"name\":\"FAF\",\"price\":\"124\"}"],["{\"id\":1474543958238,\"name\":\"tset\",\"price\":\"6\"}"]] 

は私のPHPです:

<?php 
$string = file_get_contents("products.json"); 
$json_a = json_decode($string, true); 

$arr = array(); 
foreach ($json_a as $key) { 
    array_push($arr,$key[0]); 


} 
foreach ($arr as $key) { 
    echo $key; 
} 
?> 

そして、これは私がクライアント側で取得していますものです:

{"id":1474541876849,"name":"D","price":"12"}{"id":1474541880521,"name":"DD","price":"12"}{"id":1474541897705,"name":"DDDGG","price":"124"}{"id":1474541901141,"name":"FAF","price":"124"}{"id":1474543958238,"name":"tset","price":"6"} 

それは私がそこまでないですように見えますが、何ができます私は実際にこれをJSONオブジェクトにすることができますか?

助けてください!

+0

ただいくつかのjson-stringsを連結すると、有効なjson文字列が返されません。代わりに 'json_encode'を使って試してみましたか? –

+1

ただ、 'echo" [".implode("、 "、$ arr)"を使用してください。 "]"; ' – Maxx

+0

はい、json_encode、@FranzGleichmannを使ってみました。それは私にこのような結果を与えます(そして、はい、それは閉じ角カッコなしです): "" \ ":\"名前\ ":\" D \ "、\"価格\ ": "\" ID \ ":1474541880521、\"名前\ ":\" DD \ "、\"価格\ ":\" 12 \ "}"、 "{\" id \ "、 :1474541897705、\ "名前\":\ "DDDGG \"、\ "価格\":\ "124 \"} "、" \ "id \":1474541901141、 \ "価格\":\ "価格\":\ "価格\":\ "価格\": ] {"id":1474541876849、 "name": "D"、 "price": "12"} {"id":1474541880521、 "name": "DD"、 "price": "12"} {"id ":1474541897705、"名前 ":" DDDGG "、"価格 ":" 124 "} – user1866925

答えて

1

問題は、JSON 内に JSONがあることです。

あなたが二回デコードする必要があります:

<?php 
$string = file_get_contents("products.json"); 
$json_a = json_decode($string, true); //here you turn a JSON-string into an array containing JSON-strings 

$arr = array(); 
foreach ($json_a as $key) { 
    array_push($arr,json_decode($key[0],true)); //and here you turn each of those JSON-strings into objects themselves 


} 

echo json_encode($arr); 

が私に与え、この:有効なJSONそのものであり、あなたが欲しい、おそらく何

[{ 
    "id": 1474541876849, 
    "name": "D", 
    "price": "12" 
}, { 
    "id": 1474541880521, 
    "name": "DD", 
    "price": "12" 
}, { 
    "id": 1474541897705, 
    "name": "DDDGG", 
    "price": "124" 
}, { 
    "id": 1474541901141, 
    "name": "FAF", 
    "price": "124" 
}, { 
    "id": 1474543958238, 
    "name": "tset", 
    "price": "6" 
}] 

+0

Vielen、Vielen Dank !! :)) – user1866925

関連する問題