JSON对象与字符串之间转换时的引号问题

tele_hc 2016-03-06 10:58:13
操作过程:
1、一个配置文件是json格式的
2、读出配置文件内容后用eval()解析成json对象
3、在程序中对json对象某些key的value进行修改
4、把修改过的json对象stringify()成字符串,并回写更新配置文件提

问题描述:
1、配置文件中的key都是没有加引号的;value有字符串也有数字,字符串加了引号,但是数字没有加引号
2、读取配置文件转成json没有问题,但是json转为字符串的时候发现所有的key和value都有引号了,导致配置文件不能用了。

请问:这个转换过程中引号的问题该如何解决?

...全文
13439 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beishen7234 2017-07-23
  • 打赏
  • 举报
回复
使用正则就好
tele_hc 2016-03-07
  • 打赏
  • 举报
回复
谢谢各位,问题已解决。 1、数字字符串转数组时,没有转回数值字符串,所以都加上了引号; 2、key的问题对配置文件使用没有影响,但是看起来不是很舒服,打算直接在文本中挨个替换去掉key的引号。
xuzuning 2016-03-06
  • 打赏
  • 举报
回复
按 json 语法规则,键名应用双引号括起,非数值值也应该用双引号括起 你键名没有用引号括起,那是 js 语法 至于说 所有的key和value都有引号了,导致配置文件不能用了 这是不存在的
s = '{"a":123, "b":"abc"}';
p = eval('(' + s + ')');
document.write(p.a + ' ' + p.b);
123 abc
slwsss 2016-03-06
  • 打赏
  • 举报
回复
换个序列化库
  • 打赏
  • 举报
回复
比如说 javascript 引擎会在 JSON.parse() 函数中将 json 字符串正常地转换为 javascript 对象,使用 JSON.stringify 函数() 将对象转换为 json 字符串。只要这两个转换没有问题,那就是你所谓的“配置文件”处理部分有问题,这时候就不要纠结于 JSON.stringify 有什么问题。
  • 打赏
  • 举报
回复
你的开发工具很垃圾,不要使用。 数字值,一定不能自动加引号。javascript 对象被使用 JSON.stringify() 方式序列化之后,你可以调试看到它正确地、没有加引号。 而对于 json 中的字段名称,默认加或者不加引号,都能正常解析。因此这一定要具有最起码的兼容性! 如果你的开发工具很垃圾地给数字值加了引号,或者是对于加了引号的字段名就不能解析了,那么就别用了。

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧