FastJson处理数据出现错误 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1

用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()方法,只能获取到这样一个字符串:“类名[email protected]+hashCode”,而无法拿到内部数据

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

自动生成的格式

public String toString() {
   return "Test [itemlist=" + itemlist + ", address=" + address + ", total=" + total + "]";
} 

必须修改为该格式

public String toString() {                                
  return "{\"itemlist\":\"" + itemlist + "\", \"address\":\"" + address + "\", \"total\":\"" + total + "\"}";
 } 

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





原文地址:https://www.cnblogs.com/JP6907/p/8732787.html

时间: 2024-11-03 12:48:50

FastJson处理数据出现错误 com.alibaba.fastjson.JSONException: syntax error, expect {, actual error, pos 1的相关文章

42-字符串到json 的错误 com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String

json: {"updated_at":1551780617,"attr":{"uptime_h":3,"uptime_m":17},"did":"GBBxjJYAxE4apkxwEzR3"} Map rMap = (Map) JSON.parse("{"updated_at":1551780617,"attr":{"uptim

JSON工具类库: alibaba/fastjson 使用记录

JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http://kimmking.github.io/2017/06/06/json-best-practice/ (JSON的高级使用,特别十分有参考价值) 二.项目地址和Wiki: Git地址: https://github.com/alibaba/fastjson Wiki:https://github.co

com.alibaba.fastjson.JSONObject cannot be cast to XXX异常解决

项目开发中遇到过几次这个问题,所以记录一下,代码如下: 1 @PostMapping("/save-files") 2 public void addFiles(@RequestBody List<AddFileRecordRequestDto> fileRecords) 3 { 4 LoginInfo loginInfo=sessionUtils.getLoginInfo(); 5 Assert.notNull(loginInfo,"登录信息已过期")

JSON parse error: default constructor not found. class java.time.YearMonth; nested exception is com.alibaba.fastjson.JSONException: default constructor not found. class java.time.YearMonth

java8新出的YearMonth可以方便的用来表示某个月.我的项目中使用springmvc来接收YearMonth类型的数据时发现 x-www-from-urlencoded 格式的数据可以使用"2018-12"的类型接收,但是在post请求中 接收application/json的数据时出现以下错误 2020-02-18 11:18:25.284 WARN 16212 --- [nio-8090-exec-2] .w.s.m.s.DefaultHandlerExceptionRes

阿里巴巴 fastjson-1.2.12.jar json解析异常java.lang.ClassFormatError: Invalid method Code length 66865 in class file com/alibaba/fastjson/serializer/ASMSerializer_6_UserKdlb

承接上篇:fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11' could not be parsed at index 10 之前在线上用的版本是fastjson-1.2.7.jar 一切正常,更换以后时间解析看似一切正常. 因为在系统中设计json反序列化的地方比较多,刚刚放到生产环境,app那边的接口报错了 java.lang.ClassFormat

alibaba fastjson常见问题FAQ

English | 中文 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/ Sourceforge.net : https://sourceforge.net/projects/fastjson/files/ 在maven中如何配置fastjson依赖 fastjson最新版本都会发布到maven中央仓库,你可以直接依赖. <dependen

alibaba fastjson

public static void main(String[] args) { WaveSearchOutBoundNoticeDTO vo = new WaveSearchOutBoundNoticeDTO(); List<OutboundNoticeGroupSortDTO> groupSorts= new ArrayList<OutboundNoticeGroupSortDTO>(); vo.setOnhStartItemsCount(1); vo.setGroupSort

com.alibaba.fastjson.JSONObject

package com.alibaba.fastjson; import java.util.Date; import java.util.List; import com.alibaba.fastjson.componet.Grade; import com.alibaba.fastjson.componet.User; import com.alibaba.fastjson.serializer.SerializerFeature; /** * @author Liang * * 2017年

com.alibaba.fastjson.JSONException: autoType is not support.

解决办法:https://github.com/alibaba/fastjson/wiki/enable_autotype 文摘如下: 一.添加autotype白名单 添加白名单有三种方式,三选一,如下: 1. 在代码中配置 ParserConfig.getGlobalInstance().addAccept("com.taobao.pac.client.sdk.dataobject."); 如果有多个包名前缀,分多次addAccept 2. 加上JVM启动参数 -Dfastjson.