簡體   English   中英

解析JSON:多級數組

[英]Parsing JSON: multi-level array

我需要從json輸出中獲取一個項目,但json內容並不總是一致的。

例如,如果我想獲得“name”的值,它將是['result']['attributes'][0]['name'];

但是如果json作為第二個例子被傳遞,它將是['result']['attributes'][1]['name'];

{"result":{
    "attributes":[
        {"user":"newb","name":"mike"},
        {"state":"california","city":"los angeles"}
    ]
}}

{"result":{
    "attributes":[
        {"state":"california","city":"los angeles"},
        {"user":"newb","name":"mike"}
    ]
}}

如果它所在的數組的索引未知,我將如何獲得“name”值?

var arr = obj.result.attributes;
for (var i=0; i<arr.length; i++)
    if ("name" in arr[i])
         return arr[i].name;

或者,如果它始終只是數組中的兩個對象:

 var attrs = obj.result.attributes;
 return attrs["name" in attrs[0] ? 0 : 1].name;

但是我會堅持改變那個api,兩個對象應該合並。


編輯:對不起,PHP來了:

$attrs = json_decode($jsonStr, true)["result"]["attributes"];
return $attrs[ isset($attrs[0]["name"]) ? 0 : 1 ];

這會將索引返回到attributes數組,該數組包含name屬性為"mike"

function extractNameFromJson($json) {
    foreach ($json->result->attributes as $i => $attribute) {
        if (isset($attribute['name']) && $attribute['name'] == 'mike') {
            return $i;
        }
    }
}

$index = extractNameFromJson($json);
echo $json->result->attributes[$index]['user'];

==> newb

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM