好的,我编辑了这个问题,因为它不够清楚。GSON:自定义对象反序列化
编辑2:更新了JSON文件。
我在Android应用程序中使用GSON,我需要解析JSON文件,即来自服务器,是有点过于复合物。我不希望我的对象结构太重,所以我想简化内容:,所以我的对象的结构不会是JSON文件的结构。
例如,如果在JSON我有这样的:
{
"object1":{
"attribute1" : "test1",
"attribute40" : "test40",
"user":{
"id":1,
"name":"foo"
}
,"example":{
"total":10,
"list":[
{
"tag":"tag1",
"name":"object name 1",
"pos":1
},
{
"tag":"tag10",
"name":"object name 10",
"pos":10
}
]
}
}
"object2":{
"attribute1":"test..."
}
}
我不想让我的当前对象的结构,对象Example
,一个包含ArrayList
和int
“总” 。但我想只保留一个简单的字符串,其值为"object name 1;object name 2;..."
。
此外,我想只存储用户ID,而不是完整的使用,因为我已经有存储在别处完整的用户,与其他服务器API调用。
所以我班班会是这样的:
class Foo{
int userId;
String example; //"object name 1;object name 2;..."
...
}
所以我想,我们可以用自定义解串器实现这一点,但我不觉得怎样。我想尽可能减少内存,所以我不认为有一个完整的对象的例子,然后用它来构建我的String example
是一个正确的方法。
在最坏的情况下,如果它太复杂了,我希望能够在解析示例对象时至少存储标签项列表:所以我需要一个自定义解串器来摆脱int total
。
因此,我将有:
class Foo{
int userId;
ArrayList<Tag> example;
...
}
根据您的特殊要求,GSON是过度技术。只需将您的JSON字符串传递到您的域模型的构造函数中,然后使用纯字符串操作split/extract所需的字段。 – yorkw 2012-01-04 20:48:01
嗯,确定它可能是一个解决方案,但是我有很多JSON文件,每次有超过30个字段,并且结构可能会在未来发展。所以,我肯定会更喜欢使用像GSON这样的库来减少工作和维护。特别是如果我已经在某些JSON文件上使用它。 – Chayy 2012-01-06 09:31:14
“结构可能会在未来发展”,从OO的角度来看,强烈建议现在对完整的域对象进行建模,即使您没有使用它的所有属性。 – yorkw 2012-01-08 22:18:52