【发布时间】:2012-09-16 15:29:58
【问题描述】:
我有一个生成以下 JSON 的 REST WCF 服务。
{
"RecordsUpdateResult":[
{
"ID":115,
"Crud":2,
"Data":{
"__type":"Client:#PIT.Library.AndroidClasses",
"ID":115,
"Adress":"str. 1",
"City":"Luzern",
"Description":"Client 115",
"PostalCode":6000
}
},
{
"ID":128,
"Crud":2,
"Data":{
"__type":"Client:#PIT.Library.AndroidClasses",
"ID":128,
"Adress":"",
"City":"",
"Description":"Client 128",
"PostalCode":0
}
}
]
}
如何使用 gson 库在 android 手机上反序列化?
我怀疑问题出在 "__type":"Client:#PIT.Library.AndroidClasses" 上。 我在 Android 端有一个名为“Client”的类。
我想将此 JSON 反序列化为以下类。
public class StammdatenUpdate extends ObjectBase
{
@SerializedName("Crud")
private CRUD crud;
@SerializedName("Data")
private Object data;
@Override
public String getSha1Hash()
{
// TODO Auto-generated method stub
return null;
}
public synchronized CRUD getCrud()
{
return crud;
}
public synchronized void setCrud(CRUD crud)
{
this.crud = crud;
}
public synchronized Object getData()
{
return data;
}
public synchronized void setData(Object data)
{
this.data = data;
}
}
属性 ID 在基类中。
...
Type listType = new TypeToken<ArrayList<StammdatenUpdate>>()
{}.getType();
Gson gson = new GsonBuilder().create();
// List<StammdatenUpdate> RecordsUpdate(StammdatenType type, Dictionary<long, string> listWithHashes)
postData.setParameter(new String[] { "type", "listWithHashes" });
postData.setValues(new String[] { gson.toJson(StammdatenType.CLIENT), gson.toJson(map) });
String json = post.execute(postData);
List<StammdatenUpdate> retValue = null;
if(Tools.isNullOrEmpty(json) == false)
{
retValue = gson.fromJson(json, listType);
}
return retValue;
【问题讨论】:
-
这篇文章的答案对你有帮助吗? stackoverflow.com/questions/12197138/…
-
并非如此。我使用 gson,我的类具有 @SerializedName 属性。
-
答案也是针对gson的,例子也有@SerializedName属性...你能不能也贴一下你发出请求的类并处理响应?
-
我已经更新了代码示例。
标签: android json wcf deserialization