json解析失败怎么解决?json解析常见异常有哪些?

JSON简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。那json解析失败怎么解决?下面来我们就来给大家讲解一下。

虽然后台组装成json数组的类型了,前台也得到了json类型的数据了,但数据格式不是json,导致解析失败。

json解析失败怎么解决?json解析常见异常有哪些?.png

1、方法一:

public static string ToJson(object obj, bool prettyPrint);

作用:对象的序列化。即将对象转换成一个json字符串,并返回该字符串。

第一个参数为要转换的对象

第二个参数可以省略,省略时默认为false。关于作用,建议将自己的json打印到屏幕就可以一目了然。

1.png

2、方法二:

public static T FromJson(string json);

作用:对象的反序列化。即将一个json字符串转换成一个对象,并返回对象。参数为json。

2.png

3、方法三:

public static void FromJsonOverwrite(string json, object objectToOverwrite);

作用:类似于第二个方法,第二个方法是将json转换成对象,并返回该对象,在该过程中需要创建一个新对象。

而这个方法,是将一个json的内容去覆盖或者说更新一个对象,过程中没有创建新的对象。这样会更加节省内存。

第一个参数是一个json;

第二个是要被第一个参数去更新或者覆盖的对象。

json解析常见异常有哪些?

1 :org.json.JSONException: Expected a ',' or '}' at 80 [character 81 line 1]

原因:出现乱码了, 导致json格式出错..

解决方法:

String result = new String(data,"utf-8");

默认是iso8859-1

(将编码方式改为utf-8)

if(response.getStatusLine()
    .getStatusCode() == 200)
{
    HttpEntity httpEntity = response.getEntity();
    byte[] data = EntityUtils.toByteArray(httpEntity);
    String result = new String(data, "utf-8");
    jsoncCallBack.response(result);
}

2 :java.lang.IllegalArgumentException: Malformed escape pair at index 86: http://sns.maimaicha.com/api?apikey=b4f4ee31a8b9acc866ef2afb754c33e6&format=json&page=%d&rows=20&method=news.getListByType&type=16

at java.net.URI.create(Unknown Source)

at org.apache.http.client.methods.HttpGet.(HttpGet.java:69)

at http.HttpUtils.downloadData(HttpUtils.java:37)

at test.Test2.main(Test2.java:31)

Caused by: java.net.URISyntaxException: Malformed escape pair at index 86: http://sns.maimaicha.com/api?apikey=b4f4ee31a8b9acc866ef2afb754c33e6&format=json&page=%d&rows=20&method=news.getListByType&type=16

原因:URL语法异常

&format=json&page=%d

解决方法:

这里这个 后面%d 应该改为数字(例如1 。。。)

这些就是json常见异常,知道这些我们就可以在实际工作中避开它,实现高效工作。最后大家如果想要了解更多json工具教程知识,敬请关注奇Q工具网。

推荐阅读:

java怎么做爬虫?java网络爬虫实例讲解

java架构师培训班靠谱么?怎么选择好的培训班?

json与数组的区别有哪些?JSON功能是什么?