如何使用Java中的gson从嵌套的JsonObject中检索键和值



使用Java中的gson库从复杂的嵌套Jonobject检索所有键和值的最佳解决方案?

我想以以下方式实施它。但是对于复杂的嵌套Jonobject而言,迭代一直在增加如果元素是JSON对象,则将其迭代到字段名称和JSON元素中,然后处理这些JSON元素。如果元素是JSON数组,则将其迭代为JSON元素并处理这些JSON元素。如果元素是json原始的,则将其值打印为字符串例如。请找到我的样本JSON

{"address":{"name":"Deepa","street":"qwe","pincode":"234567","state":"Mumbai","country":"India"},"Foo":{"bar":{"id":"string","aa":"bb","aaa":"bbb","ccc":{"ddd":"eee","fff":"ggg","hh":"iii","duration":{"fromDate":"2015-04-13T00:00:00","toDate":"2015-05-27T00:00:00"},"firstCollectionDate":"2015-04-14T00:00:00"},"qqq":"zzz","ss":{"dd":"ff","tt":"wertyt"},"eerr":{"fffkjku":123,"cavcfgv":"ryty"},"sfgfg":{"memo":"hi","status":"open"}},"ffa":{}}}

使用可以递归地执行以下操作:

public static Object getValue(JSONObject jsonObject, String key)
{
    if(jsonObject.has(key))
    {
        return jsonObject.get(key);
    }
    Iterator<String> iterator = jsonObject.keys();
    while(iterator.hasNext())
    {
        Object value = jsonObject.get(iterator.next());
        if(value instanceof JSONObject)
        {
            return getValue((JSONObject) value, key);
        }
        else if(value instanceof JSONArray)
        {
            for(int i = 0; i < ((JSONArray) value).length(); i++)
            {
                return getValue(((JSONArray) value).getJSONObject(i), key);
            }
        }
    }
    return "not found";
}

最新更新