栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

com.alibaba.fastjson.JSONException: illegal identifier : pos 3, json

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

com.alibaba.fastjson.JSONException: illegal identifier : pos 3, json

项目场景:

在改造基于消息队列请求的接口时, 利用paho模拟发送数据, 项目上解析报错


问题描述: 发送的数据格式如下

项目报错截图如下


错误详情

com.alibaba.fastjson.JSONException: illegal identifier :  pos 3, json : {
    "machineKey":"111",
    "data":[
        {
            "businessCode":"002",
            "businessName":"办电",
            "businessType":"缴费",
            "businessHallName":"城南"
        },
        {
            "businessCode":"003",
            "businessName":"开户",
            "businessType":"业务",
            "businessHallName":"城南"
        }
    ]
}
	at com.alibaba.fastjson.parser.JSONLexerbase.scanSymbolUnQuoted(JSONLexerbase.java:829)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:278)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1335)
	at com.alibaba.fastjson.parser.DefaultJSONParser.parse(DefaultJSONParser.java:1301)
	at com.alibaba.fastjson.JSON.parse(JSON.java:152)
	at com.alibaba.fastjson.JSON.parse(JSON.java:162)
	at com.alibaba.fastjson.JSON.parse(JSON.java:131)
	at com.alibaba.fastjson.JSON.parseObject(JSON.java:223)
	at com.sxd.onlinereservation.mqtt.PushCallback.messageArrived(PushCallback.java:83)
	at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:499)
	at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:402)
	at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:206)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266)
	at java.util.concurrent.FutureTask.run(FutureTask.java)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)


原因分析:
  1. 首先进行JSON格式校验(我这里是对的) , 地址 https://www.sojson.com/simple_json.html

  2. 因为使用的是格式美化好的json(如下代码), 因此每行前面都有空格, 在fastJson接收这些数据时, 会将空格转成rn等类似的格式导致解析异常, 需要将前面空格去掉!!!

    {
        "machineKey":"111",
        "data":[
            {
                "businessCode":"002",
                "businessName":"办电",
                "businessType":"缴费",
                "businessHallName":"城南"
            },
            {
                "businessCode":"003",
                "businessName":"开户",
                "businessType":"业务",
                "businessHallName":"城南"
            }
        ]
    }
    
解决方案:

改成如下格式:

{
"machineKey":"111",
"data":[
{
"businessCode":"002",
"businessName":"办电",
"businessType":"缴费",
"businessHallName":"城南"
},
{
"businessCode":"003",
"businessName":"开户",
"businessType":"业务",
"businessHallName":"城南"
}
]
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/311512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号