com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1

海豚精灵https://mgo.whhtjl.com

用ajax发送JSON数据,其中数据类型为List,出现com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1这种类型的错误

一般是数据格式问题,首先我们必须清楚JSON的数据格式

JSON中,对象用{  }包围,映射用“:”表示,集合或数组用[  ]包围

比如一个Java类的JSON格式为

{        
名称1:值1,
名称2:值2 
}

一个List的JSON格式为

[                  
{名称1:值,名称2:值2},
{名称1:值,名称2:值2} 
]

在这里需要注意一个问题,在Map中使用“=”连接键值,而不是“:”,跟List是不一样的

而且,必须在我们需要转化的Java类中重写toString方法,否则会自动调用默认的toString()方法,只能获取到这样一个字符串:“类名+@+hashCode”,而无法拿到内部数据

用eclipse自动生成的的toString()方法也是不符合JSON的格式要求的

自动生成的格式

public String toString() {
		return "WebsiteImages [id=" + id + ", imageUrl=" + imageUrl
				+ ", linkAddress=" + linkAddress + ", title=" + title
				+ ", typeId=" + typeId + ", order=" + order + ", describe="
				+ describe + ", platformId=" + platformId
				+ ", parentSubjectId=" + parentSubjectId + ", addTime="
				+ addTime + ", updateTime=" + updateTime + ", number=" + number
				+ "]";
}

必须修改为该格式

public String toString() {
		return "{\"id\":\"" + id + "\", \"imageUrl\":\"" + imageUrl + "\", \"linkAddress\":\"" + linkAddress + "\", \"title\":\"" + title + "\", \"typeId\":\"" +typeId + "\", \"order\":\"" + order + "\", \"describe\":\"" + describe + "\", \"platformId\":\"" + platformId + "\", \"parentSubjectId\":\"" + parentSubjectId + "\", \"addTime\":\"" + addTime + "\", \"updateTime\":\"" + updateTime + "\", \"number\":\"" + number + "\" }";
}

我们就能在后台用 JSON.parseArray 方法获取到我们需要的List了。

猜你喜欢

转载自blog.csdn.net/qq_35393693/article/details/107738338