2016-11-03 15 views
0

以下に示すようにネストされたJSONがあります。私はキーを抽出したいと思います。 PersonBの値に基づいて検索する。 Age ==60。 JSONは正しいデータ構造ですか? JSONpathを使ってみました。しかし、このようなものを抽出するためのクエリを思いつくことができませんでした。ネストJSON:JSONパス/ GSONを使用したJSONの値に基づくキー抽出

{ 
    "PersonA":{ 
     "shortnames":[ 
     "Bravo", 
     "Delta" 
     ], 
     "Name":"Person 123", 
     "Age":"15", 
     "Maritial Status":"Single", 
     "Work Experience":"O", 
     "ID":291 
    } "PersonB":{ 
     "shortnames":[ 
     "Alpha", 
     "Tango" 
     ], 
     "Name":"Person 234", 
     "Age":"60", 
     "Maritial Status":"Married", 
     "Work Exxperience":"2O", 
     "ID":292 
    } 
} 

どのようにこのようなクエリがどのように表示されるかについての任意のポインタは?

+0

ただ、下記の回答は役に立ちましたかどうかを疑問に思っ? – notionquest

答えて

0

ここで、Ageを '60'とするキーを取得するサンプルコードを示します。

public static void main(String[] args) { 

     String jsonString = "{\"PersonA\": {\"shortnames\": [\"Bravo\",\"Delta\"],\"Name\": \"Person 123\",\"Age\": \"15\",\"Maritial Status\": \"Single\",\"Work Experience\": \"O\",\"ID\": 291},\"PersonB\": {\"shortnames\": [\"Alpha\",\"Tango\"],\"Name\": \"Person 234\",\"Age\": \"60\",\"Maritial Status\": \"Married\",\"Work Exxperience\": \"2O\",\"ID\": 292},\"PersonC\": {\"shortnames\": [\"Alpha\",\"Tango\"],\"Name\": \"Person 234\",\"Maritial Status\": \"Married\",\"Work Exxperience\": \"2O\",\"ID\": 292}}";   
     Gson gson = new Gson();   
     JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class);    

     for (Entry<String, JsonElement> jsonEntry : jsonObject.entrySet()) { 
      if (jsonEntry.getValue().getAsJsonObject().get("Age") != null) { 
       if (jsonEntry.getValue().getAsJsonObject().get("Age").getAsString().equals("60")) { 
        System.out.println(jsonEntry.getKey()); 
        System.out.println(jsonEntry.getValue()); 
       } 
      } 
     } 
} 

出力: -

PersonB 
{"shortnames":["Alpha","Tango"],"Name":"Person 234","Age":"60","Maritial Status":"Married","Work Exxperience":"2O","ID":292} 
関連する問題