brickcarrierhiahia
2019-06-13 21:51
采纳率: 100%
浏览 1.6k

JSON.stringify将JSON数组对象转换成字符串,每个字符前多出了一个"\r"字符

图片说明
如图, 红色标识的是json数组对象,蓝色标识的转换后的结果图片说明补充一下,发生奇怪现象的是一个form表单的input标签的value属性图片说明序列化之后使用JSON.stringify

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • brickcarrierhiahia 2019-06-24 20:16
    已采纳

    问题解决了, 特来还愿:

    我原来使用的jquery版本是3.2.1, 这个版本在序列化form表单的时候把标签的value属性序列化上了"\r"字符,
    换成截止目前最新的3.4.1版本的jquery问题就解决了,
    这个bug困扰了我十天, 吃不下饭睡不着觉, 快死的时候终于解决了. 愿大家少走弯路

    点赞 评论
  • blownewbee 2019-06-13 22:11

    \r是回车,本身是不可见的,是不是你的原始的json就有,排查下。

    点赞 评论
  • liupan6889 2019-06-13 23:17

    遍历,正则替换,JSON.stringify

    点赞 评论
  • 星曜纤尘 2019-06-14 01:06

    试了下,我的没有出现你那种问题

    图片说明

    点赞 评论
  • Funnee 2019-06-14 16:17

    1.推测是serializeArray()序列化表单时,把\r转换进去了,可以尝试换下数据的封装方式,或者不用这个序列化的方法。
    2.可以遍历,用String.replace重新构造数组,把有问题的字段替换。
    3.可以用JSON.stringify(json, replacer)两个入参的形式处理

    JSON.stringify( temp, function(k,v){
         if (k == "value") return "Do something...";
    } );
    
    点赞 评论

相关推荐 更多相似问题