如何使用Gson库在JSON文件中查找密钥?

时间:2017-04-07 16:43:25

标签: java json gson

给定一个类似下面代码的JSON文件,如何找到具有相应值的特定键,而无需在Java类或其他方面对结构进行硬编码。让我们说我想得到" Signal_Settings"作为一个JSON对象但是考虑到JSON文件结构发生变化的可能性,我希望得到这个对象,例如通过迭代文件中的所有键。我试图迭代地做到这一点并且失败了,所以我认为递归函数是我尚未找到解决方案的方式。我的迭代代码如下所示:

while (true) {
            try {
                for(Map.Entry<String, JsonElement> entry:newJsonObj.entrySet()){
                    System.out.println(entry.getKey());
                    System.out.println("Before NewJsonObj:" + newJsonObj);
                    newJsonObj = newJsonObj.getAsJsonObject(entry.getKey());
                    System.out.println("After NewJsonObj:" + newJsonObj + "\n");

                    //tempEntrySet = newJsonObj.entrySet().iterator().next();
                }

                //System.out.println("Key:" + tempEntrySet.getKey());

                //System.out.println("TempEntry:" + tempEntrySet);
            }catch (Exception e){
                break;
            }
        }

和JSON文件:

{
    "config2": {
        "UDP_Settings": {
            "ListenAddress": "'127.0.0.1'",
            "ListenPort": "54523"
        },
        "Signal_Settings": {
            "Count": 1,
            "Signals": [
                {
                    "Name": "time",
                    "Type": "uint8",
                    "Interval": "foo",
                    "Description": "",
                    "Unit": null
                },
                {
                    "Name": "othersignal",
                    "Type": "uint8",
                    "Interval": "fff",
                    "Description": "",
                    "Unit": null
                }
            ]
        },
        "Tag_Settings": null,
        "Model_Settings": null
    }
}

0 个答案:

没有答案