文档章节

json 序列化异常问题

Zorn
 Zorn
发布于 2018/01/12 17:41
字数 206
阅读 15
收藏 0

最近有个需求,要服务器把json数据序列化输到到页面js变量。

刚开始以为so easy,直接 

<script>
    window.data = JSON.parse("'!{JSON.stringify(data)}'")
</script>

发现神奇的报错,

Uncaught SyntaxError: Unexpected token with JSON.parse

后来检查的数据,发现有些字符串是有双引号的,类似下面这种

{
  val1: '哈哈"呵呵'
  val2: '哈哈哈\n哈哈'
  val3: "哈哈'哈哈"
}

看到这种数据,真TM想锤死java那边的开发人员。

没办法了,于是跑去查阅了javascript官方文档,废话不多说,写一个完美的转义方法

// NodeJs服务端
function jsonToStr (data) {
   return JSON.stringify(data, (k, v) => {
       if (typeof v == 'string') {
           return v.replace(/\n/g, "")
                   .replace(/\r/g, "\\\\r")
                   .replace(/\t/g, "\\\\t")
                   .replace(/"/g, '\\"')
       } else {
           return v;
       }
   })
}
// 渲染web,Jade
script
    window.data = '!{jsonToStr(data)..replace(/'/g, "\\'")}'

暂时是解决这个Bug了。

© 著作权归作者所有

Zorn
粉丝 0
博文 4
码字总数 1386
作品 0
深圳
程序员
私信 提问
SpringMVC整合fastjson解析json出错

先贴出json: 贴出Java类,以上的json是有以下的Java类对象序列化而成的 服务器端抛出异常: 我想问题应该出在那个Map成员属性上,这段json格式是合法的,客户端使用gson对Java对象进行序列化...

Benjaman
2016/03/28
958
7
AspNetCore Json序列化设置

AspNetCore 中的Json序列化处理已经默认使用Newtonsoft.Json库了... 比如像MVC中: 不过使用过程中会发现一些问题,其实这算默认设置吧: Json序列化后的字段格式会变成小驼峰形式 Json序列化时...

taadis
2017/12/20
565
0
httpclient提交json到tomcat,接收到的json却是不完整的

写了一个rest接口,接口接受json数据解析批量入索引。入索引的频率和大都挺大的,每天看日志都会有几条写入失败,原因是收到client端的数据不完整,是一个被截断的json。如图: 我是通过htt...

coder4j
2017/12/19
1K
8
fanwenjie/Brief-JSON

Brief-JSON A Brief JSON Serializer API: JSONSerializer.deserializer :Parse Json text to List and Map; JSONSerializer.serializer :Create Json text from List and Map; BeanSerializ......

fanwenjie
2015/03/09
0
0
使用CXF开发RestFul WebService问题解决方案

最近在项目中,因为几个系统自己需要数据交换,所以采用进来都比较流行的RestFul风格WebService,实现框架采用apache的cxf,apache的东西一直以来都是比较的好用,回话少说,进入正题。 首先...

xdev
2013/05/18
11.7K
3

没有更多内容

加载失败,请刷新页面

加载更多

YUM仓库配置及命令详解

导读 通过源代码编译的方式安装程序在灵活性、可定制性方面具有无可比拟的优势,但也正因为这种特性给管理员带来了额外的维护开销,当应用在大规模的服务器群集时存在一定的局限性。那么就需...

问题终结者
42分钟前
11
0
docker初学者

docker简介 在真正使用这项技术之前很难深刻的理解它的概念。 从简单的方面来说,docker就是一个轻量级的虚拟机。接下去的学习首先不妨抱着这个想法来看,让后慢慢寻找差别,最终我们会回来试...

街角的小丑
今天
13
0
了解下Hz单位的意思

今天看到计组的突然看到Hz这个单位,突然不知道它是啥意思,就百度了解啦下。 赫,是频率的基本单位,为纪念验证电磁波存在的德国物理学家海因里希·鲁道夫·赫兹(Heinrich Rudolf Hertz)而...

南桥北木
今天
9
0
Mysql的sql_mode模式

sql_mode 是一个很容易被忽视的配置,宽松模式下可能会被输入一些非准确数据,所以生产环境下会要求为严格模式,为了保持生产环境和开发环境,测试环境一致性,我们开发环境和测试环境也要配...

贾峰uk
今天
11
0
Qt程序打包发布方法(使用官方提供的windeployqt工具)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/toTheUnknown/article/details/81748179 如果使用到了Qt ...

shzwork
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部