解决JavaScript使用eval构建json数据时的引号问题
碰到一个JavaScript的eval问题,大概有这么一段代码
1 2 3 | function buildRequestJson(key, value) { return JSON.stringify(eval( '({"' + key + '": "' + value + '"})' )); } |
上面这段代码如果传入一个带字符串的key或者value时,就会报错
1 2 3 4 | let key = "this is key" ; let value = '{"name":"abc"}' ; buildRequestJson(key, value); // 报错 |
上面的value因为有内容中包含双引号,在执行eval时,与eval中的双引号形成了冲突,所以会报错;
通常的做法是双引号和单引号混合并进行转移,虽然这样也能处理,但是总感觉很牵强。
其实可以另外一个做法,就是向一个空的json中放入key-value即可,这样就不用管key或者value是否有单双引号了
比如下面这样
1 2 3 4 5 | function buildRequestJson(key, value) { let data = {}; // 创建一个新的空json对象 data[key] = value; // 然后将key-value设置进去即可 return JSON.stringify(data); } |
再次使用上面的那些数据,就不用担心单双引号的问题了,也不用去做转义。
原文地址:https://www.cnblogs.com/-beyond/p/14552832.html
如需转载,请注明文章出处,谢谢!!!
分类:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2019-03-17 使用mybatis-generator