我有以下结果类,其对象将作为JSON返回。
public class Result {
public String objectid;
public String dtype;
public String type;
public String name;
public String description;
public Result() {
this.objectid = "";
this.dtype= "";
this.type="";
this.name= "";
this.description = "";
}
public String getObjectid() {
return objectid;
}
public void setObjectid(String s) {
this.objectid = s;
}
public String getDtype() {
return dtype;
}
public void setDtype(String s) {
this.dtype= s;
}
public String getType() {
return type;
}
public void setType(String s) {
this.type = s;
}
public String getName() {
return name;
}
public void setName(String s) {
this.name = s;
}
public String getDescription() {
return description;
}
public void setDescription(String s) {
this.description = s;
}
}
我有一个配置json,它读取我的主文件。java,并以json作为HTTP响应返回。详情如下:
{
"objectid" : "test",
"dtype" : "test",
"type" : "test",
"name" : "test",
"description" : "test" // removed
},
{
"objectid" : "test",
"dtype" : "test",
"type" : "test",
"name" : "test",
"description" : "test"
}
主要的JAVA
使用Gson,它读取配置。json文件,并且必须返回json。
我的代码:
Gson g = new Gson();
Result r = g.fromJson(res.toString(), Result.class);
其中res.toString()
获取配置。json文件内容为字符串。
我的问题是:
我遇到以下异常:
例外情况。谷歌。格森。JsonSyntaxException:com.google.格森。流动格式错误的JSONException:使用JsonReader。setLenient(true)在第7行第3列接受格式错误的JSON。谷歌。格森。JsonSyntaxException:com.google.格森。流动格式错误的JSONException:使用JsonReader。setLenient(true)在第7行第3列接受格式错误的JSON
有什么指示吗?
您有两个对象,但从GSON获得一个对象。或者,您应该使用以下格式的JSON字符串从这个JSON字符串中获取结果对象。
{
"objectid" : "test",
"dtype" : "test",
"type" : "test",
"name" : "test",
"description" : "test"
}
第二种选择:-
你将不得不改变JSON字符串格式。你将不得不在JSON数组中改变它,并获得这个对象的ArrayList,之后,我们可以使用数组列表获得Result对象index.newJSON字符串会是这样的。
{"resultArray":[{
"objectid" : "test",
"dtype" : "test",
"type" : "test",
"name" : "test",
"description" : "test"
},
{
"objectid" : "test",
"dtype" : "test",
"type" : "test",
"name" : "test",
"description" : "test"
}]}
和java代码来获取Result Object。
Gson g = new Gson();
ResultList r = g.fromJson(res.toString(), ResultList.class);
ArrayList<Result> resultList = r.getResultList();
for(int x=0 ;x<resultList.size();x++){
Result result = resultList.get(x);
}
结果列表模型为:-
public class ResultList {
@SerializedName("resultArray")
public ArrayList<Result> resultList;
public getResultList(){
return resultList;
}
}
@注:-Result.java将使用与上面给出的相同。
使用
catch(JsonSyntaxException e)
而不是
catch(MalformedJsonException e)
因为MalformedJsonException是一些内部异常,而JsonSyntaxException是实际抛出的异常。下面是一段代码片段
String response="Something";
JsonElement my_json;
try {
my_json=jsonParser.parse(response);
} catch(JsonSyntaxException e) {
e.printStackTrace();
JsonReader reader = new JsonReader(new StringReader(response));
reader.setLenient(true);
my_json=jsonParser.parse(reader);
}
如果这是实际的json:您在这里有一个额外的逗号和一个拼写错误。错误表明您有糟糕的json语法。所以这可能是首先要查看的地方之一。
{
"objectid" : "test",
"dtype" : "test",
"type" : "test",
"name " : "test",
"description" : "test", //delete this comma
},
{
"objectid" : "test",
"dtyoe" : "test", // spelling error
"type" : "test",
"name " : "test",
"description" : "test"
}
您似乎也在解析两个对象并告诉gson您想要其中一个结果对象。考虑单独解析对象或告诉gson您想要一个结果数组返回
问题内容: 我有以下课程: 而此代码应解析json: 哪里 JSON是: 我得到的错误是: 但是我不知道为什么,根据jsonlint,json是有效的。 我为什么会收到此错误的任何主意吗? 问题答案: 您的JSON有效-但您的映射类无效(部分不匹配)。特别是,无法将类的属性映射为给定JSON中的a。很难推荐一种备用结构来存储数据而又不会看到较大的示例,但是通常在JSON结构与Java类之间进行映射
问题内容: 我有以下课程: 而此代码应解析json: 哪里 JSON是: 我得到的错误是: 但是我不知道为什么,根据jsonlint,json是有效的。 我为什么会收到此错误的任何主意吗? 问题答案: 您的JSON有效-但您的映射类无效(部分不匹配)。特别是,无法将类的属性映射为给定JSON中的a。很难推荐一个备用的结构来存储数据而不会看到更大的样本,但是通常,在JSON结构和Java类之间进行映
[失败:com.google.gson.jsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY但BEGIN_OBJECT位于第1行第2列路径$] 我怎么解决?
我怎么解决这个?
问题内容: 我正在尝试使用Gson反序列化json数组,但是当前正在获取JsonSyntaxException。json字符串是由.NET MVC3 Web服务使用JsonResult创建的(意味着,我不是手动创建json,它是由我知道可以在其他几种平台上使用的库创建的)。 这是json: 这是代码: 异常表明日期格式无效: 有人知道发生了什么吗? 问题答案: 我在这里找到了答案,但奇怪的是,没有