Как использовать ObjectMapper для чтения в формате Json объекта, который содержит String и List <String> - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть такой объект:

public class Marketplace {
    private String name;
    private int id;
    private List<String> supportedLanguages;
}

, и у меня есть строка ввода Json String, подобная этой:

{
"name":"US",
"id":1,
"supportedLanguages":{"en_US", "es_US"}
}

Сначала я попробовал что-то подобное, но не получилось:

objectMapper.readValue(marketplaceInJsonString, Marketplace.class);

Затем я попробовал что-то подобное, но все-таки не получилось:

JsonNode jsonNode = objectMapper.readValue(marketplaceInJsonString, JsonNode.class);

Marketplace marketplace = new Marketplace(jsonNode.get("name").asText()), jsonNode.get("id").asInt(), jsonNode.findValuesAsText("supportedLanguages"));

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

И есть ли какие-либо проблемы с форматированием ввода Json String?

Пожалуйста, помогите, и очень признателен.

1 Ответ

1 голос
/ 07 апреля 2019

Неверная строка json. Json
измените ее на

{
  "name": "US",
  "id": 1,
  "supportedLanguages": [
    "en_US",
    "es_US"
  ]
}

Код тестирования:

String marketplaceInJsonString = "{\"name\":\"US\",\"id\":1,\"supportedLanguages\":[\"en_US\",\"es_US\"]}";
ObjectMapper objectMapper = new ObjectMapper();
Marketplace marketplace = objectMapper.readValue(marketplaceInJsonString, Marketplace.class);
System.out.println(marketplace); 

// output

Marketplace(name=US, id=1, supportedLanguages=[en_US, es_US])
...