我正在尝试解码以下JSON:
{"urls":{"id":"1","url":"http://www.someUrl.com"}}
问题是代码只有在' urls'
中有多个条目时才有效$value = json_decode(file_get_contents('php://input'));
foreach($value->urls as $urlField) {
$url = trim($urlField->url);
$id = trim($urlField->id);
}
所以
{"urls":{"id":"1","url":"http://www.someUrl.com"}}
未正确解析但
{"urls":[{"id":"1","url":"http://www.someUrl.com"}, {"id":"2","url":"http://www.someUrl2.com"}]}
是
如果有单个网址的话。输入循环中的$ urlField值是一个字符串,其中包含' http://www.someUrl.com'值。 知道为什么吗?
答案 0 :(得分:2)
试试这个:
当你的json包含2个或更多数据时,它会创建一个额外的数组,因此它与第一个不同。 现在我在这里做两个条件。
$json = '{"urls":[{"id":"1","url":"http://www.someUrl.com"}, {"id":"2","url":"http://www.someUrl2.com"}]}';
$arr = json_decode($json);
foreach($arr as $key => $urlField){
if(count($arr->urls) > 1){
foreach($urlField as $key2 => $urlField2){
echo $urlField[$key2]->id; //echo $urlField2->id;
echo $urlField[$key2]->url; //echo $urlField2->url;
}
}else{
echo $urlField->id;
echo $urlField->url;
}
}
<强>结果:强>
1
http://www.someUrl.com
2
http://www.someUrl2.com
检查并告诉我它是否适合您。