Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Gson反序列化JSON_Java_Json_Gson_Deserialization - Fatal编程技术网

Java 使用Gson反序列化JSON

Java 使用Gson反序列化JSON,java,json,gson,deserialization,Java,Json,Gson,Deserialization,我从一个类似于以下语法的服务器接收到一个JSON,我需要一些反序列化和解析它的帮助。我在这方面做了很多阅读,发现使用GSON真的很有用!(我将在此处发布代码的任何更新) (更正JSON): 我发现这个网站非常整洁,因为它解释了如何使用gson,并且很好地解释了反序列化。我对JSON的理解是,它是一个数组,数据字段是一个数组数组 我的问题是如何解析这个?我有一个函数,它将使用字符串搜索特定的区域名称。在反序列化发生并且条目与正确的区域匹配后,应该返回数据类型和url。从那篇文章中,我的理解是我应该

我从一个类似于以下语法的服务器接收到一个JSON,我需要一些反序列化和解析它的帮助。我在这方面做了很多阅读,发现使用GSON真的很有用!(我将在此处发布代码的任何更新)

(更正JSON):

我发现这个网站非常整洁,因为它解释了如何使用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;
}
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"]]}
]