java error(1)syntax error, expect {, actual string...

原因:直接将list放入JSONObject(使用的alibaba.fastjson)的时候,如果直接打印这个JSONObject就会发现列表外面有中括号。而JSON形式的数据需要的是{}括号
例:给JSONObject传入map<Object,List>形式的数据,那么久不能解析。因为list自带[]…
{“book”:[“14.00”,“博弈心理学”,“20”,“12”,“2020-09-09”]}
试过JSONArray,list都没有成功.

 List<JSONObject> objects = JSONObject.parseArray(JSONObject.toJSONString(object.getJSONArray("book")), JSONObject.class);

不会出错的原因:获取到网页相应Response的时候,是接受的JSON形式的数据,不存在这样的问题

我又可以了:
像这样取Object,再转JSONString,再转List就可以了


List<entity> hisList = JSONObject.parseArray(JSONArray.toJSONString(str.get("xxxList")), entity.class);
str是JSONObject类型的
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 这个错误提示是由alibaba fastjson这个JSON序列化和反序列化库抛出的。它是一个JSON语法错误,提示我们在预期位置应该是一个对象{},但实际上传入的是一个字符串(actual string),并且该字符串的格式不符合JSON的语法规则。 具体来说,错误提示中出现了字母p,这可能是JSON字符串中某个键或值的非法字符或格式错误。可能是因为JSON字符串中缺少引号,或者引号不匹配,或者缺少逗号分隔键值对等错误导致的。 为了解决这个问题,我们需要仔细检查JSON字符串的语法,尤其是字符串中的引号、大括号、方括号、逗号、冒号等符号是否正确使用。如果有必要,可以使用JSON在线验证工具进行检查,找出问题所在,以便及时修复错误。 总之,在使用alibaba fastjson进行JSON序列化和反序列化时,我们需要注意JSON字符串的语法规则,避免出现语法错误导致程序抛出异常。 ### 回答2: com.alibaba.fastjson.jsonexception: syntax errorexpect {, actual string, p 是Fastjson抛出的异常,该异常通常在解析JSON字符串时出现。此异常出现的原因是JSON字符串本身存在一些语法上的问题,导致Fastjson无法正确识别和解析。 在这个异常信息中,expect {是期望的字符,actual string是实际出现的字符,p则表示在哪个位置出现这个异常。 一个常见的出现这种异常的原因是JSON字符串中出现了多余的符号或者缺少了必要的符号,比如括号、引号等。此外,JSON字符串中可能存在格式不规范的问题,比如缺少逗号分隔符、多余的逗号分隔符等,也会导致Fastjson解析异常。 解决这个问题需要检查JSON字符串本身是否符合JSON语法规范,可以通过在线JSON格式验证工具或者第三方JSON解析器进行检查。如果是在代码中出现这个异常,可以通过打印出实际解析过程中的JSON字符串来定位问题所在。在解析过程中,也可以使用Fastjson提供的一些调试工具和日志输出来帮助定位问题。 总之,出现这个异常时需要先排除JSON字符串本身存在的问题,确保JSON格式规范正确,才能进一步调试代码并解决问题。 ### 回答3: com.alibaba.fastjson.jsonexception: syntax errorexpect {, actual string, p 是 Fastjson 运行时错误信息,表明解析 JSON 时出现语法错误。具体而言,这个错误提示告诉我们在 JSON 中出现了一个非法字符 p,而解析器却期望它是一个开放花括号 {。以下是一些导致此错误的可能原因和解决方案: 1. 错误的 JSON 格式:要求 JSON 必须满足语法规范,包括正确的花括号匹配、逗号分隔和字符串引号等。如果 JSON 格式不正确,会导致解析器无法解析并出现此错误。可以使用 JSON 验证器(如 JSONLint)来检查 JSON 格式是否正确。 2. 字段名称或值不合法:在 JSON 中,每个字段名称和值都必须用引号括起来。如果字段名称或值中包含非法字符(如单引号、特殊字符等),也会导致解析器无法解析并出现此错误。 3. 版本不匹配:Fastjson 支持多种版本,如果解析器的版本和 JSON 的版本不匹配,也可能导致此错误。可以检查使用的 Fastjson 版本和 JSON 的版本是否匹配。 4. 错误类型转换:在 Java 中,使用 Fastjson 将 JSON 转换为对象时,需要确保对象的类型和 JSON 的类型匹配。如果类型不匹配,可能会出现错误。可以尝试使用 Fastjson 的特性,如 TypeReference 和 Type,显式指定对象类型。 总之,要解决这个问题,需要仔细检查 JSON 格式、字段名称和值、版本匹配以及类型转换等方面,确保它们符合 Fastjson 的要求。如果无法解决问题,可以在 Fastjson 社区中寻求帮助或寻找更好的 JSON 解析器替代 Fastjson。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值