好的,我編輯了這個問題,因爲它不夠清楚。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