Java 使用Gson反序列化JSON
我从一个类似于以下语法的服务器接收到一个JSON,我需要一些反序列化和解析它的帮助。我在这方面做了很多阅读,发现使用GSON真的很有用!(我将在此处发布代码的任何更新) (更正JSON): 我发现这个网站非常整洁,因为它解释了如何使用gson,并且很好地解释了反序列化。我对JSON的理解是,它是一个数组,数据字段是一个数组数组 我的问题是如何解析这个?我有一个函数,它将使用字符串搜索特定的区域名称。在反序列化发生并且条目与正确的区域匹配后,应该返回数据类型和url。从那篇文章中,我的理解是我应该使用JSONArray。如有任何反馈,将不胜感激。下面是一些我已经开始的代码Java 使用Gson反序列化JSON,java,json,gson,deserialization,Java,Json,Gson,Deserialization,我从一个类似于以下语法的服务器接收到一个JSON,我需要一些反序列化和解析它的帮助。我在这方面做了很多阅读,发现使用GSON真的很有用!(我将在此处发布代码的任何更新) (更正JSON): 我发现这个网站非常整洁,因为它解释了如何使用gson,并且很好地解释了反序列化。我对JSON的理解是,它是一个数组,数据字段是一个数组数组 我的问题是如何解析这个?我有一个函数,它将使用字符串搜索特定的区域名称。在反序列化发生并且条目与正确的区域匹配后,应该返回数据类型和url。从那篇文章中,我的理解是我应该
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;
}
import com.google.gson.JsonArray;
导入com.google.gson.JsonDeserializationContext;
导入com.google.gson.JsonDeserializer;
导入com.google.gson.JsonElement;
导入com.google.gson.JsonObject;
导入com.google.gson.JsonParseException;
字符串名;
公共类数据{
串品牌;
int-num;
int-url;
}
公共类类型{
字符串数据类型;
int值;
字符串url;
}
公共类型反序列化器(String json,String zone){//这是将传递到函数中的json字符串
JsonObject JsonObject=json.getAsJsonObject();
JsonArray JsonArray=jsonObject.getAsJsonArray();
int指数=-1;
对于(inti=0;i有效的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"]]}
]
啊!!好多了!对。那是无效的JSON。如果您打印出JSON
字符串,您会发现它与您在JSON.org上找到的语法不匹配。仍然是无效的JSON。提示:第1、2、5和7.1行中存在错误。请允许我更正这一点。关于如何解析它,您有一个映射列表。三个映射键中的两个对应于列表,其中一个列表包含ther List.(如果你去json.org学习语法,这会更有意义。)是的,我已经更正了我的json,在我的互联网失败之前,我一直在做这件事。请advise@Masterminder-第一个和最后一个引号不属于此处。(粘贴到a以检查语法。)@Masterminder-之后您将丢失一个引号这里是“string”“string”,index“
。我该如何提取“data”字段并通过该数组进行递归?您能给我看一些代码吗?我假设您必须使用JsonArrayor,或者从该数组中提取第一个元素(即数组),然后通过该数组进行递归
[{"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"]]}
]