我有跟随Json String的snipets:
{
"networks": {
"tech11": {
"id": "1",
"name": "IDEN"
},
"tech12": {
"id": "2",
"name": "EVDO_B"
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用一些方法将此String转换为Object:
private static Gson mGson = new Gson();
...
public static WebObjectResponse convertJsonToObject(String jsonString) {
WebObjectResponse webObjectResponse = null;
if(jsonString != null && jsonString.length() > 1){
webObjectResponse = mGson.fromJson(jsonString, WebObjectResponse.class);
}
return webObjectResponse;
}
Run Code Online (Sandbox Code Playgroud)
哪个WebObjectResponse
类应该代表上面提到的String.
如果我得到静态字段,它并不复杂.但在我的情况下,值有不同的名称:tech11
,tech12
....
我可以使用@SerializedName
但它的工作在特定的情况下,如转换"类"到"class_".如您所见,networks
对象定义为tech
对象列表但具有不同的后期修复.
public class WebObjectResponse{
private DataInfoList networks = null;
}
Run Code Online (Sandbox Code Playgroud)
这是静态实现,我定义了2个值tech11
,tech12
但下一个响应可能是techXX
public class DataInfoList {
private DataInfo tech11 = null;
private DataInfo tech12 = null;
}
public class DataInfo {
private String id = null;
private String name = null;
}
Run Code Online (Sandbox Code Playgroud)
将当前Json String转换为Object的好方法是什么,其中元素列表也是Objects,并且具有不同的名称?
谢谢.
使用地图!
我会做以下事情
public class WebObjectResponse {
private Map<String, DataInfo> networks;
}
public class DataInfo {
private String id = null;
private String name = null;
}
// later
Gson gson = new Gson();
String json = "{\"networks\": {\"tech11\": { \"id\": \"1\",\"name\": \"IDEN\" }, \"tech12\": { \"id\": \"2\", \"name\": \"EVDO_B\" } }}";
WebObjectResponse response = gson.fromJson(json, WebObjectResponse .class);
Run Code Online (Sandbox Code Playgroud)
对于json中的每个对象,networks
将在Map
您的类的字段中添加一个新条目WebObjectResponse
.然后,您可以techXX
通过键盘集引用它们或迭代它们.
假设这样的结构
{
"networks": {
"tech11": {
"id": "1",
"name": "IDEN"
},
"tech12": {
"id": "2",
"name": "EVDO_B"
},
"tech13": {
"id": "3",
"name": "WOHOO"
}, ...
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10777 次 |
最近记录: |