2017-02-20 3 views
-1

Ниже мой JSON код формата:как читать имена ключей от ответа JSon в случае нечувствительной

{ 
    "topic": "Employee", 
    "message": { 
     "Id": "IND01", 
     "data": { 
      "salary": 50000 
     } 
    } 
} 

Ключевые имена, такие как topic, message, Id и data для чтения регистронезависимыми. Как я могу получить ключи от этого тела ответа json?

+0

Вы должны попытаться переформулировать ваш вопрос как актуальный вопрос. –

+0

Вы не знаете свой вопрос –

+0

-1 от меня. Ваш вопрос не очень хорошо представлен, ясен или даже жизнеспособной строки JSON. Вероятность быстрого ответа пропорциональна ясности вопроса. –

ответ

1

Прежде всего, ваш JSON не является vaild.I считаю, что это ваш вопрос, и он решит ваши другие проблемы. Попробуйте

{ 
    "topic": "Employee", 
    "message": { 
     "Id ": "IND01", 
     "data ": { 

      "salary ": 50000 
     } 
    } 
} 

Это действительный JSON в вашем case.Henceforth узнать правильный формат JSON и использовать любой JSon валидатор для проверки вашего JSON.

0

Если вы можете конвертировать json на карту, вы можете переназначить всю карту (рекурсивно), преобразуя каждую клавишу в ее нижнее значение.

Что-то вроде:

public static Map<String,Object> convertToLowerCaseKeys(Map<String,Object> map){ 
    return map.entrySet().stream().collect(Collectors.toMap(e -> e.getKey().toLowerCase(), e -> { 
     if(e.getValue() != null && e.getValue() instanceof Map){ 
      return convertToLowerCaseKeys((Map<String,Object>)e.getValue()); 
     } 
     return e.getValue(); 
    })); 
} 

Обратите внимание, что приведение к карте может быть немного слишком поспешным, но я пошел с ним для простоты.

EDIT:

Для поиска ключа (верхнего уровня), в то же время чувствительны к регистру:

public static Object getCaseInsensitive(Map<String,Object> map, String key){ 
    if(key == null){ 
     return map.get(null); 
    } 
    Optional<String> optional = map.keySet().stream().filter(e -> e != null && e.toLowerCase().equals(key.toLowerCase())).findAny(); 
    if(optional.isPresent()){ 
     return map.get(optional.get()); 
    } 
    return null; 
} 
+0

Как насчет считывания определенного имени ключа как нечувствительного к регистру? – Raksh

+0

Проверьте соответствие между фактическим ключом, преобразованным в нижний регистр, и ключ, который хотите протестировать, также преобразованный в нижний регистр –

+0

, можете ли вы прокомментировать ответ @Jeremy Grand – Raksh

Смежные вопросы