java - GSON将json转换为类对象

标签 java android json gson

我的json:

{
  "d": {
    "a": {
      "someId": null,
      "e": "8"
    },
    "p": {
      "m": "t"
    }
  }
}

我正在使用

gson.fromJson(ResourceUtils.getStringFromInputStream(inputStream), MyClass.class);

我的类(class)

{
public D d;
}

D {
public A a;
public P p;
}

A {
public String someId;
public String e;
}

P {
public String m;
}

但是当我运行它时:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected STRING but was NULL at path $.someId

所以基本上我想从 android 应用程序中的 json 文件创建一个对象。我正在使用 gson 来实现这一点。但 null 值未正确设置。

最佳答案

Gson 默认行为是“忽略”空属性。您可以调用serializeNulls来更改此行为:

Configure Gson to serialize null fields. By default, Gson omits all fields that are null during serialization.

示例:

public static void main (String args[])
    {
        GsonBuilder gsonBuilder = new GsonBuilder();
        gsonBuilder.serializeNulls();
        Gson gson = gsonBuilder.create();
        String filename="path2/theJsonFile";
        try {
            JsonReader read= new JsonReader(new FileReader(filename));
            MyClass myclass= gson.fromJson(read, MyClass.class);
            System.out.println(gson.toJson(myclass));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }

输出将是:

{"d":{"a":{"someId":null,"e":"8"},"p":{"m":"t"}}}

关于java - GSON将json转换为类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49807148/

相关文章:

java - 为什么我在 Java BasicTableUI$Handler.setValueIsAdjusting 中不断收到 NullPointerException?

android - 在 Android 上解码和渲染视频

java - 测试多个EditText是否为空

javascript - 时间戳 php 转 jquery 格式

javascript - 在客户端绑定(bind) JSON 数据时如何避免 'null' 字符串

java - Java中的初始化顺序

java - Android SDK 更新失败,说-> http ://dl-ssl. google.com/android/repository/repository.xml 的 XML 验证失败

java - 方法中未使用的局部变量是否会在 JVM 中获取内存?

java - 保存应用程序数据?

java - 如何在两个 Activity 之间显示不同的 json 数据?