首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Google的Gson API正确地反序列化JSON?

如何使用Google的Gson API正确地反序列化JSON?
EN

Stack Overflow用户
提问于 2010-05-19 17:47:57
回答 1查看 69.1K关注 0票数 23

简而言之,这是我想用JAVA解析的JSON对象的草图:

代码语言:javascript
复制
{
    object1: {
            item1: //[String | Array | Object] ,
            item2: // ...
            //<> more items
    object2: { /* .. */ }
    //<> more objects
}

这些是我为解析而创建的POJO (为了简洁起见,我将省略import语句):

(1)完整JSON对象的表示

代码语言:javascript
复制
public class JObjectContainer {

    private List<JObject> jObjects ;

    public JObjectContainer() { }

    //get & set methods

}

(2)嵌套对象的表示:

代码语言:javascript
复制
 public class JObject {

    private String id ;
    private List<JNode> jObjects ;

    public JObject() { } 

    //get & set methods

}

(3)项目的表示:

代码语言:javascript
复制
 public class JNode {

    private JsonElement item1 ;
    private JsonElement item2 ;
    //<> more item fields

    public JNode() { }

    //get & set methods

}

现在,创建一个Gson实例(用于导入jsonFileFileReader),

代码语言:javascript
复制
 Gson gson = new Gson() ;
 JObjectContainer joc = gson.fromJson(jsonFile,JObjectContainer.class) ;

每当我尝试访问可解析对象时(例如,通过ListIterator),我都会得到一个NullPointerException。但是,Gson确实创建了我指定的类的对象,并且不会抛出任何后续错误。

我知道以前也做过这样的事情。那么,我错过了什么?

提亚

EN

回答 1

Stack Overflow用户

发布于 2010-08-22 00:46:08

我认为BalusC对于wrt (通常是一对一数据绑定)的具体问题提供了很好的指导;但是如果您认为应该有更多的动态处理,您也可以考虑其他GSon处理包。许多包都有额外的或替代的方法来映射事物: Json-lib、flexjson和Jackson至少比Gson增加了一些。有些提供了更宽松的映射(将事物的名称定义为类型),另一些则实际支持多态类型(声明一个对象,但实际上可以映射到序列化的子类型)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2864370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档