Вложенный JSON: извлечение ключа на основе значения в JSON с помощью JSON path /GSON

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

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

Есть какие-то указания на то, как будет выглядеть такой запрос?

1 ответ

  1. Вот пример кода для получения ключа, где возраст ’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}