ObjectMapper с использованием библиотеки com.jsoniter - PullRequest
0 голосов
/ 07 января 2020

У меня есть Map<String, Object> map, который был десериализован из простой JSON строки {"field1":"val1", "field2":"val2", "isReal":true}. Я пытаюсь создать Java объект MyObject с полями выше.

Я могу сделать это, используя com.fasterxml.jackson.databind.ObjectMapper примерно так:

public static MyObject load(Map<String, Object> map) throws IOException {
        ObjectMapper mapper = new ObjectMapper();
        return mapper.readValue(new ObjectMapper().writeValueAsString(map), MyObject.class);
    }

Мне было интересно, кто-нибудь знает, как сделать то же самое, используя библиотеку com.jsoniter?

I Я пытался использовать JsonIterator.deserialize, но это не принимает Map в качестве ввода.

Я также видел использование ReflectionEncoderFactory на веб-сайте библиотеки, но я не полностью gr asp относительно того, как я использовал бы это, чтобы построить объект MyObject

1 Ответ

1 голос
/ 07 января 2020

Согласно объяснению @Scary Wombat:

Сначала необходимо преобразовать карту обратно в строку JSON, а затем преобразовать строку JSON в объект:

    public static MyObject load(Map<String, Object> map) throws IOException {
        return JsonIterator.deserialize(JsonStream.serialize(map), MyObject.class);
    }

JsonStream.serialize(map) это то же самое new ObjectMapper().writeValueAsString(map)

...