我从服务器收到一个类似于以下语法的JSON,我需要一些帮助反序列化&解析它。我已经做了很多阅读,并发现使用GSON非常有用! (我会在这里发布我的代码的任何更新)
(更正了JSON):
[{
"name" : "Zone1",
"types" : [{"datatype":"string","brand":"string","index":0},
{"datatype":"string","value":"int32,"index":1},
{"datatype":"string","url":"string,"index":2}]
"data" : [["gucci",2,"www.whoami12345.com"]]
},
{
"name" : "Zone2",
"types" : [{"datatype":"string","brand":"string","index":0},
{"datatype":"string","value":"int32,"index":1},
{"datatype":"string","url":"string,"index":2}]
"data" : [["nike", 23,"www.nike.com"]]
}]
我发现这个网站Link非常整洁,因为它解释了如何使用gson并很好地解释了反序列化。我对JSON的理解是它是一个数组,数据字段是一个数组数组。
我的问题是如何解析这个问题?我有一个函数,它将采用字符串搜索特定的区域名称。在反序列化发生并且条目与正确的区域匹配之后,应该返回数据类型和URL。从那篇文章中,我的理解是我应该使用JSONArray。对于任何反馈,我们都表示感谢。以下是我开始的一些代码
import com.google.gson.JsonArray;
import com.google.gson.JsonDeserializationContext;
import com.google.gson.JsonDeserializer;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParseException;
String name;
public class data{
String brand;
int num;
int url;
}
public class types{
String datatype;
int value;
String url;
}
public types Deserialiser(String json, String zone){ // this is the json string that will be passed into the function
JsonObject jsonObject = json.getAsJsonObject();
JsonArray jsonArray = jsonObject.getAsJsonArray();
int index = -1;
for (int i = 0; i<jsonArray.size();i++){
String temp = jsonArray.get(i).get("name");
if (temp.equals(zone){
index =i;
break;
}
}
....
types jsonTypes = new types();
// set everything else
return jsonTypes;
}
答案 0 :(得分:1)
有效的JSON(我认为):
[{"name" : "Zone1",
"types" : ["datatype":"string","value":"int","url":"string"],
"data" : [["gucci",2,"www.whoami12345.com"]]},
{"name" : "Zone2",
"types" : ["datatype":"string","value":"int","url":"string"],
"data" : [["nike", 23,"www.nike.com"]]}
]
没有 - 错过了“对象”括号
再试一次:
[{"name" : "Zone1",
"types" : [{"datatype":"string","value":"int","url":"string"}],
"data" : [["gucci",2,"www.whoami12345.com"]]},
{"name" : "Zone2",
"types" : [{"datatype":"string","value":"int","url":"string"}],
"data" : [["nike", 23,"www.nike.com"]]}
]
阿!!好多了!