[英]Deserialization of a JSON using Gson
我正在从服务器接收类似于以下语法的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的理解是它是一个数组,而数据字段是一个Arrays数组。
我的问题是我该如何解析? 我有一个函数,它将使用字符串搜索特定的区域名称。 反序列化发生并且条目匹配正确的区域后,应该返回数据类型和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;
}
有效的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"]]}
]
啊!! 好多了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.