2016-11-03 2 views
0

У меня есть вложенный JSON, как показано ниже. Я хотел бы извлечь ключ, например. PersonB на основе поиска по его значению, например. Age ==60. Является ли JSON правильной структурой данных для достижения чего-то подобного ?. Я пробовал использовать JSONpath. Но не смог найти запрос, чтобы извлечь что-то вроде этого.NESTED JSON: извлечение ключа на основе значения в JSON с использованием пути JSON/GSON

{ 
    "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}