我尝试使用Gson将我的json字符串转换为java对象,但不知何故它没有成功,我还没弄明白为什么......
我的Json字符串
{
"JS":{
"JS0":{
"Name":"ABC",
"ID":"5"
},
"JS1":{
"Location":"UK",
"Town":"LD"
},
"JS2":{
"Usable":"true",
"Port":"ABC"
}
}
}
在java代码中,我有4个类,JS,JS0,JS1和JS2
JS类包含JS0,JS1和JS2变量
JS0,JS1和JS2类包含Json字符串示例中的字段,例如JS0包含02个字段,字符串名称和字符串ID
在所有类中,我有变量的getter / setter,02构造函数(01带有空参数,另一个带有参数字段中的所有变量)
和使用Gson:
Gson gson = new Gson();
jsObject = gson.fromJson(sb.toString(), JS.class);
当我从jsObject访问JS0,JS1和JS2对象时,它们是null ...
有人能告诉我,我做错了什么吗?
非常感谢,
答案 0 :(得分:1)
问题在于,您正在尝试转换
{
"JS" : {
/* rest of JSON */
}
}
到JS
对象,但上面的JSON是像这样的
class Foo {
JS JS;
}
因此,您需要首先从JSON字符串中获取JS
的值,然后调用fromJSON
以使用作为第二个参数传递的JS.class对其进行反序列化。
或强>
创建一个仅包含JS
作为变量的简单类,然后调用fromJSON
,将该类作为fromJSON
的第二个参数传递,如下所示:
<强>爪哇强>
class Foo {
JS JS;
}
jsObject = gson.fromJson(sb.toString(), Foo.class);