我有以下JSON对象:
$json = '{
"Name": "Peter",
"countries": {
"France": {
"A": "1",
"B": "2"
},
"Germany": {
"A": "10",
"B": "20"
},
....
}
}';
我想解析属性"国家"中对象的属性。像一个数组。在Javascript中,我会使用lodash函数values
。 PHP中是否有任何功能可以轻松完成?
答案 0 :(得分:4)
这可能是重复的。
以下是您的需求:
$array = json_decode($json, true);
json_decode解析一个json对象。 true选项告诉它返回一个关联数组而不是一个对象。
具体访问国家/地区信息:
foreach ($array["countries"] as $ci) {
//do something with data
}
有关详细信息,请参阅手册: http://php.net/manual/en/function.json-decode.php
编辑以在另一个答案中添加一个好点: 如果您还需要国家/地区名称,则可以使用foreach访问密钥和值。像这样:
foreach ($array["countries"] as $country => $info) {
//do something with data
}
答案 1 :(得分:2)
您可以使用NUnit简单地将字符串解析为json,并使用如下对象表示法:
$countries = json_decode($json)->countries;
//do anything with $countries
答案 2 :(得分:1)
array_keys
与Lodash _.values
的基本内容相同。
$obj = json_decode($json, true); // cause you want properties, not substrings :P
$keys = array_keys($obj['countries']);
// $keys is now ['France', 'Germany', ...]
但是,在PHP中,您可以同时获得密钥和值。
foreach ($obj['countries'] as $country => $info) {
// $country is 'France', then 'Germany', then...
// $info is ['A' => 1, 'B' => 2], then ['A' => 10, 'B' => 20], then...
}