我的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。但是空值没有正确设置。
答案 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()