GSON将json转换为类对象

时间:2018-04-12 23:14:08

标签: java android json gson

我的json:

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

我正在使用

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

MyClass的

{
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 app中的json文件创建一个对象。我正在使用gson。但是空值没有正确设置。

2 个答案:

答案 0 :(得分:1)

Gson默认行为是“忽略”null属性。您可以调用serializeNulls

来更改此行为
  

配置Gson以序列化空字段。默认情况下,Gson省略所有   序列化期间为空的字段。

示例:

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"}}}

答案 1 :(得分:1)

您可以使用http://www.jsonschema2pojo.org/ 将json转换为java类。

并将Gson转换为json:new Gson().tojson()