阅读了我能找到的所有文章后,我想知道json数据是否有效。
我正在使用php发出此请求:
$myjson= file_get_contents('http://slhassall.rightboatexpert.com/api/boats');
var_dump(json_decode($myjson));
并将此转储到页面,是否有效json?
object(stdClass)[1]
public 'pagination' =>
object(stdClass)[2]
public 'total' => int 32
public 'num_per_page' => int 25
public 'page' => int 1
public 'results' =>
array (size=25)
0 =>
object(stdClass)[3]
public 'id' => int 54
public 'manufacturer' => string 'Utrecht' (length=7)
public 'condition' => string 'used' (length=4)
public 'model' => string 'Iron Sailing Barge' (length=18)
public 'marketing_status' => string 'For Sale' (length=8)
public 'year' => null
public 'stock_number' => null
public 'location' => string 'Suffolk' (length=7)
public 'description' => string 'Clipper design. Built in Utrecht 1988, 25m in
length, an elegantly converted Dutch sailing barge with fantastic internal and external
social entertainment /display spaces. Suitable for corporate or pri' (length=201)
public 'sale_status' => string 'For Sale' (length=8)
public 'price' => int 149000
public 'currency' => string 'GBP' (length=3)
public 'thumbnail' => string '/api/images/262' (length=15)
public 'boat_image_id' => int 262
1 =>
object(stdClass)[4]
public 'id' => int 51
public 'manufacturer' => string ' Wood' (length=5)
public 'condition' => string 'used' (length=4)
public 'model' => string 'MFV/Guard vessel ' (length=17)
public 'marketing_status' => string 'For Sale' (length=8)
public 'year' => int 1959
public 'stock_number' => null
public 'location' => string 'Great Yarmouth, Norfolk UK' (length=26)
public 'description' => string '' (length=0)
public 'sale_status' => string 'For Sale' (length=8)
public 'price' => int 35000
public 'currency' => string 'GBP' (length=3)
public 'thumbnail' => string '/api/images/219' (length=15)
public 'boat_image_id' => int 219
2 =>
我问,因为当我尝试连接节点时:
$array = (json_decode($myjson));
echo $array->boat->manufacturer;
我收到此错误:
注意:未定义的属性:第6行的C:\ wamp \ www \ json \ index.php中的stdClass :: $ boat
注意:尝试在第6行的C:\ wamp \ www \ json \ index.php中获取非对象的属性
第6行是echo语句。 我用Google搜索了这些错误代码,但无法弄明白。
任何帮助都将不胜感激。
由于
答案 0 :(得分:1)
您的JSON有效,因为无效的JSON会导致返回NULL
:
http://php.net/manual/en/function.json-decode.php
虽然我建议您在调用json_decode
后进行检查,以便您知道以后访问该对象时发生了什么,并发现您正在访问非对象的属性(即NULL
)
您收到错误是因为您的对象没有这样的结构 - 正如您的var_dump
告诉您的那样,结果对象中没有属性boat
。
从var_dump
开始,表示该对象有两个属性pagination
和results
。在
results
有一个包含25个项目的数组。在每个项目中都有一个对象具有属性id
,manufacturer
,condition
等等。
而且,确实你的问题不包含JSON,php var_dump
没有给你一个JSON ......
我不确定你想做什么。我想你想打印每艘船的所有制造商,所以...(未经测试)
$object = json_decode($myjson);
if ($object == null) {
// json is invalid, or $myjson actually contains NULL
} else {
$array = $object->results;
foreach ($array as $item) {
echo $item->manufacturer;
}
}
答案 1 :(得分:0)
此JSON有效,但您尝试访问不在根目录中的项目。 返回的对象在根中有“facet”,“pagination”和“results”但没有“boat”
以下是我用safari解析后得到的内容: