2017-12-16 10 views
0

はの私は、次のJSONファイルを持っていると仮定しましょう:キーの単語がjavaの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のキー名が厳密に "id1"と "id2"ではなく "id"という名前になっていないためです。

+2

どのようなJSONライブラリを使用していますか?キーを繰り返し処理し、文字列を確認する必要があります –

+0

キーが "id"で始まるかどうかをチェックしますか? – Janar

+0

@Janarはい、あります。 –

答えて

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

質問はどのように 'キー'を得るのですか? –

0

私はJava 8以降を使用している場合、キー

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

を見つけるためにこれらの方法を知っている:

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()); ; 
}); 

出力は

のようなものであるようにエントリーセットとループとして JsonObjectフィールドを取得

2017-12-16 20:07:43.779 INFO org.example.ExampleJUnitTTest:52 - キーを持つ:id1
2017-12-16 20:07:43.785情報org.example.ExampleJUnitTTest:52 - キーを持つ:id2

関連する問題