使用Gson将json字符串解析为对象

时间:2015-05-18 11:55:31

标签: java json gson

我尝试使用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 ...
有人能告诉我,我做错了什么吗?
非常感谢,

1 个答案:

答案 0 :(得分:1)

问题在于,您正在尝试转换

{
   "JS" : {
       /* rest of JSON */
   }
}

JS对象,但上面的JSON是像这样的

的Java类的表示
class Foo {
   JS JS;
}

因此,您需要首先从JSON字符串中获取JS的值,然后调用fromJSON以使用作为第二个参数传递的JS.class对其进行反序列化。

创建一个仅包含JS作为变量的简单类,然后调用fromJSON,将该类作为fromJSON的第二个参数传递,如下所示:

<强>爪哇

class Foo {
   JS JS;
}


jsObject = gson.fromJson(sb.toString(), Foo.class);