如何检查java中JSON对象中是否存在键中的单词?

问题描述 投票:0回答:3

假设我有以下JSON文件:

{
  "id1" : "User",
  "id2" : "Admin"
  "gender" : "Male"
}

如果我想检查一个JSONObject是否有一个包含字符串'id'的密钥,我该怎么做呢?当我尝试做类似的事情:

for(JsonElement e : json.getAsJsonObject().get("accounts").getAsJsonArray()){
JsonObject json = e.getAsJsonObject();
    if(json.has("id")){
        //do stuff
    }
}

它似乎不起作用。我认为这是因为JSON中的键名不是严格命名为“id”而是“id1”和“id2”。

java json
3个回答
0
投票

我知道这些方法找到关键

import org.json.JSONObject;



        JSONObject object = new JSONObject("your json");
        setString(object.keySet());
        list(object.keys());
        System.out.println(object.keySet().contains("id1")); // boolean will be return if your json has id1 or id2 and you are looking for id it will return false

public void setString(Set<String> list)
    {
        for(String s1:list)
        {
            if(s1.contains("id"))
            {
                System.out.println("Contains");
            }
        }
    }

    public void list(Iterator<String> list)
    {
        while(list.hasNext())
        {
            if(list.next().contains("id"))
            {
                System.out.println("Contains");

            }
        }
    }

0
投票

我已经使用了json-simple1.1.jar。

JSONParser parser= new JSONParser();
        try{
            Object obj = parser.parse(new FileReader("E://test.json"));

            JSONObject jsonObject =  (JSONObject) obj;

            Iterator iterator = jsonObject.keySet().iterator();

            while(iterator.hasNext())
            {
                if(String.valueOf(iterator.next()).startsWith("id")){

                    System.out.println("Present");
                }
            }


        }
        catch(Exception e)
        {
            //Logging error message
        }

0
投票

如果使用Java 8或更高版本:获取JsonObject字段作为条目集和循环

String json = "{ \"id1\" : \"User\", \"id2\" : \"Admin\"," 
          + " \"gender\" : \"Male\" }";
JsonParser jp = new JsonParser();
JsonObject jo = jp.parse(new StringReader(json)).getAsJsonObject();
jo.entrySet().forEach( e -> {
   if(e.getKey().startsWith("id")) // or contains("id")
      log.info("has key: {}", e.getKey()); ;
});

输出就像

2017-12-16 20:07:43.779 INFO org.example.ExampleJUnitTTest:52 - 有密钥:id1 2017-12-16 20:07:43.785 INFO org.example.ExampleJUnitTTest:52 - 有密钥:id2

© www.soinside.com 2019 - 2024. All rights reserved.