简而言之,这是我想用JAVA解析的JSON对象的草图:
{
object1: {
item1: //[String | Array | Object] ,
item2: // ...
//<> more items
object2: { /* .. */ }
//<> more objects
}
这些是我为解析而创建的POJO (为了简洁起见,我将省略import
语句):
(1)完整JSON对象的表示
public class JObjectContainer {
private List<JObject> jObjects ;
public JObjectContainer() { }
//get & set methods
}
(2)嵌套对象的表示:
public class JObject {
private String id ;
private List<JNode> jObjects ;
public JObject() { }
//get & set methods
}
(3)项目的表示:
public class JNode {
private JsonElement item1 ;
private JsonElement item2 ;
//<> more item fields
public JNode() { }
//get & set methods
}
现在,创建一个Gson实例(用于导入jsonFile
的FileReader
),
Gson gson = new Gson() ;
JObjectContainer joc = gson.fromJson(jsonFile,JObjectContainer.class) ;
每当我尝试访问可解析对象时(例如,通过ListIterator
),我都会得到一个NullPointerException
。但是,Gson确实创建了我指定的类的对象,并且不会抛出任何后续错误。
我知道以前也做过这样的事情。那么,我错过了什么?
提亚
发布于 2010-08-22 00:46:08
我认为BalusC对于wrt (通常是一对一数据绑定)的具体问题提供了很好的指导;但是如果您认为应该有更多的动态处理,您也可以考虑其他GSon处理包。许多包都有额外的或替代的方法来映射事物: Json-lib、flexjson和Jackson至少比Gson增加了一些。有些提供了更宽松的映射(将事物的名称定义为类型),另一些则实际支持多态类型(声明一个对象,但实际上可以映射到序列化的子类型)。
https://stackoverflow.com/questions/2864370
复制相似问题