GSON - десериализовать нулевые значения в «нулевые» строки - PullRequest
1 голос
/ 07 февраля 2020

ИМХО я сталкиваюсь со странным поведением GSON. Давайте возьмем следующий пример:

{
    "Name": "emaborsa",
    "Surname": null
}

и мой POJO:

public class User {

    @SerializedName("Name")
    private String name;

    @SerializedName("Surname")
    private String surname;

    // getter and setter
}

Я десериализовал его, используя следующий код:

Gson g = new Gson();
User user = g.fromJson(json, User.class);

Переменная name устанавливается с помощью "emaborsa", переменная surname Я ожидала, что для нее задано значение NULL, но вместо этого есть строка "NULL". Это правильное поведение или я что-то упустил? Я пытался гуглить, но трудно найти что-то связанное с String и null ...

Ответы [ 2 ]

0 голосов
/ 08 февраля 2020

Это хорошо сработало, используя ваш код в качестве основы:

package gsonexample3;

import com.google.gson.Gson;
import com.google.gson.annotations.*;

public class User {


    public static void main(String[] args) {
        Gson g = new Gson();
        User user = g.fromJson(json, User.class);
    }

    @SerializedName("Name")
    private String name;

    @SerializedName("Surname")
    private String surname;

    private static String json = "{\"Name\": \"emaborsa\", \"Surname\": null}";


}
0 голосов
/ 07 февраля 2020

Похоже, вы должны указать, что хотите сериализовать пустые значения.

Gson gson = new GsonBuilder() .setPrettyPrinting() .serializeNulls()

Исходя из - https://howtodoinjava.com/gson/serialize-null-values/

...