Извлечь наивысший родительский ключ для значения JSON, используя Джексона - PullRequest
1 голос
/ 29 марта 2019

У меня есть json

{
 "yes": 
      {
       "en": "Yes",
       "de": "Ja"
      },
 "no": 
      {
       "en": "No",
       "de": "Nein"
      }
}

Я хочу использовать функцию java, использующую Джексона, которая может найти максимально возможную клавишу для определенного значения json.

Для экземпляра, если я передал значение какNein -> then no Выходной ключ должен находиться на верхнем уровне.Как я могу сделать это в Java ??

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Ну, вы можете попробовать что-то вроде следующего:

   public static void getRootNodeOfJSONObject() throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = "{\"yes\":{\"en\": \"Yes\",\"de\": \"Ja\"},\"no\": {\"en\": \"No\",\"de\": \"Nein\"}}";
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        JsonNode jsonNodeRoot = objectMapper.readTree(jsonString);

        for (Iterator key = jsonNodeRoot.fields(); key.hasNext();) {
            String text = key.next().toString();
            if(text.contains("Nein"))
            {
                String rootElement = text.substring(0, text.indexOf("="));
                System.out.println("Root element: " + rootElement);
            }
        }
    }

    public static void main(String[] args) throws IOException {
        getRootNodeOfJSONObject();
    }
0 голосов
/ 29 марта 2019

Вы можете попробовать JsonPath (https://github.com/json-path/JsonPath).

Сосредоточьтесь на разделе «Предикаты».

Если вам нужна помощь, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...