Парсинг JSON Feed

У меня есть фид json в URL, который содержит следующие данные.

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">
[{"ID":1123,"OrderNumber":"1394","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"someone.biz/Home/ShowTemplate/283","ShipDate":"2/28/2015","InHomeDate":"3/2/2015","Quantity":"10,000","Price":"$3,000","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"3/30/2015","InHomeDate":"3/31/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"4/13/2015","InHomeDate":"4/14/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"}]
</string>

Мне нужно, чтобы получить и проанализировать это php. Но это дает неверную ошибку foreach со следующим кодом. Может кто-нибудь помочь мне о том, как показать правильно.

$json = file_get_contents('http://someurl.biz/api/api/1123');

$obj = json_decode($json, true);

foreach($obj as $ob) {
echo $ob->ID;
}

2

Решение

Попробуй как

$json = file_get_contents('http://superiorpostcards.biz/api/api/1123');
$obj = json_decode($json, true);
$array = json_decode($obj, true);
foreach($array as $value){
echo $value['ID'];
}
4

Другие решения

Это работает.

Поскольку ваш JSON стал ассоциативным массивом, вы должны сделать 2 foreach.

  • Top foreach анализирует 3 «объекта» в ‘[object1, object2, object3]’
  • Нижний foreach анализирует каждый «объектный» контент

    $data = json_decode('[{"ID":1123,"OrderNumber":"1394","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"someone.biz/Home/ShowTemplate/283","ShipDate":"2/28/2015","InHomeDate":"3/2/2015","Quantity":"10,000","Price":"$3,000","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"3/30/2015","InHomeDate":"3/31/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"},{"ID":1123,"OrderNumber":"1413","ProjectType":"Postcard","Template":"WtlossStudy solo","TemplateURL":"","ShipDate":"4/13/2015","InHomeDate":"4/14/2015","Quantity":"5,000","Price":"$1,500","CallTracking":"0"}]');
    
    foreach($data as $obj) {
    foreach($obj as $key=>$val) {
    echo $key."->".$val." | ";
    }
    }
    

Да, это проще с JS. Но php «json» — это не объект JS, это массив ассоциативных массивов.

1

Если второй параметр json_decode установлен в true, ваш json будет преобразован в ассоциативный массив вместо объекта. Попробуй это:

$obj = json_decode($json, false);

foreach($obj as $ob) {
echo $ob->ID;
}
0

$my_array_for_parsing = json_decode(/** put the json here */);

это дает вам JSon как php ассоциативный массив.


$my_array_for_parsing = json_decode($json);
foreach ($my_array_for_parsing as $name => $value) {
// This will loop three times:
//     $name = a
//     $name = b
//     $name = c
// ...with $value as the value of that property
}
0
По вопросам рекламы [email protected]