为了账号安全,请及时绑定邮箱和手机立即绑定

在所有 JSON 字符串内容上添加引号

在所有 JSON 字符串内容上添加引号

森林海 2021-11-12 17:16:55
我从服务器得到了一个有问题的数据作为字符串:"{word_list: [{word: Small,phones: [{phone: s, quality: 56.33, extent: [77, 84]}, {phone: m, quality: 98.45, extent: [84, 89]}, {电话:ao,质量:98.45,范围:[89, 102]},{电话:l,质量:98.28,范围:[102, 125]}]}]}"我无法对此数据执行 JSON.parse,因为其字符串上缺少引号(在值上,但我也想在键上添加引号)是否有任何正则表达式可以用来覆盖我的数据中的所有字符串(但只有字符串,而不是数组和数字),以便我可以轻松执行 JSON.parse 操作?
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

问题在于它不是JSON 字符串。JSON 是一种以类似 JavaScript 的方式格式化对象的标准。而且你得到的数据甚至不兼容 JS。

要求服务器端开发人员使用一个库来对他们这边的对象进行字符串化。有很多用于多种语言的库。

例如 Java 中的 Jackson: Converting Java objects to JSON with Jackson

和 PHP 中的 json_encode:https : //devdocs.io/php/function.json-encode


查看完整回答
反对 回复 2021-11-12
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

如前所述,干净的方法是在服务器端修复它。如果您在服务器端无法访问或无论您的原因是什么,这里有两种方法可以在客户端修复它:

  1. 仅当您的字符串不以数字开头或结尾时才可用:编写一个转换器,在正确的位置填上引号。您必须扫描字符串并在这些组合之间填写引号(c!=[0-9]): '{c' 'c:' 'c,' 'c}' '[c' 'c]' ' C'

  2. ELSE:你必须检查整个单词。所以你可以用你所有的括号和逗号分割你的字符串,并检查每个单词是否符合数字模式。如果是 -> 你什么都不做。否则 -> 添加引号


查看完整回答
反对 回复 2021-11-12
  • 2 回答
  • 0 关注
  • 599 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信