String转fastjson报错的问题及解决方法

问题:使用elasticsearch时,我用了StringBuilder来拼接语句,存入es的时候,格式需要转成JSONObject的格式(使用fastjson是因为fastjson速度比较快,有了极致的优化。)。自测的时候,发现存入es的jsonobject数据,插入数据第三次的时候,前两次插入的数据都没有了,只有第三次的数据。将数据单独出来json格式化,也成功了,多次debug的时候,发现问题出现在了string上面,存入es里面的数据,格式是string,于是用了JSONObject.parseObject来转换,高兴地以为找到了问题,结果运行。。。String转fastjson报错。。。找了半天终于找到原因了。
**解决:**String转fastjson的时候,如果value是String型的,则拼接的时候必需要加上双引号,加上引号,加上引号,单双都可以。因为拼接的时候,代表value的变量是String的话,不需要加双引号也是可以拼接成功的,但是拼接出来的value是没有双引号的。
例如:String str = "{gongzuo:666,daima:haoba}";
System.out.println(JSONObject.parseObject(str));

这样就会报错,如果对haoba加上双引号或者单引号,就不会报错,
正确:String str = "{gongzuo:666,daima:\"haoba\"}";
或者 String str = "{gongzuo:666,daima:'haoba'}";

犯了一个低级的错误,请大家一定要注意!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值