Как разобрать данную строку для отображения строки отображения строки объекта? - PullRequest
0 голосов
/ 09 мая 2018

Привет, моя входная строка выглядит так

{
   6138249={
              value=[multi2, multi3, multi4], 
              key=TestMulticat
           }, 
   6161782={
              value=Traps (Bamboo / Box), 
              key=Observation gear
           }
}

Я хочу отобразить эту входную строку в Map<String,Map<String,Object>> в java.

Поскольку входные данные кажутся мне более загадочными, я не могу понять, как сделать то же самое. Я пробовал ObjectMapper класс из jackson, но все еще не смог отобразить. Код, который я пишу, выглядит следующим образом

Map<String,Map<String,Object>> data=objectMapper.readValue(singledoc, Map.class);

Может кто-нибудь предложить мне либо подход, чтобы сделать это, либо решение, оба будут одинаково полезны.

1 Ответ

0 голосов
/ 09 мая 2018

Ваш ввод не похож на действительный json, так как содержит строковые значения без кавычек.Json будет выглядеть так:

{
6138249:{
          value:["multi2", "multi3", "multi4"], 
          key:"TestMulticat"
       }, 
6161782:{
          value="Traps (Bamboo / Box)", 
          key="Observation gear"
       }
}

Для такого ввода вы можете использовать Джексон:

objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);
Map<String, Map<String, Object>> result = objectMapper
       .readValue(test, new TypeReference<Map<String, Map<String, Object>>>() {});

ALLOW_UNQUOTED_FIELD_NAMES поможет вам иметь дело с именами полей без кавычек, однако таких нетопция для неквотированных значений.

В вашем случае, поскольку это не json, вы можете либо исправить вашу сериализацию, чтобы получить действительный Джексон, либо написать свой собственный Deserializer для обработки Джексоном, потому что в настоящее время невозможно прочитать jsonсо строковыми значениями без кавычек.

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