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

我从服务器得到了一个有问题的数据作为字符串:

"{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 操作?


森林海
浏览 600回答 2
2回答

有只小跳蛙

问题在于它不是JSON 字符串。JSON 是一种以类似 JavaScript 的方式格式化对象的标准。而且你得到的数据甚至不兼容 JS。要求服务器端开发人员使用一个库来对他们这边的对象进行字符串化。有很多用于多种语言的库。例如 Java 中的 Jackson: Converting Java objects to JSON with Jackson和 PHP 中的 json_encode:https : //devdocs.io/php/function.json-encode。

潇潇雨雨

如前所述,干净的方法是在服务器端修复它。如果您在服务器端无法访问或无论您的原因是什么,这里有两种方法可以在客户端修复它:仅当您的字符串不以数字开头或结尾时才可用:编写一个转换器,在正确的位置填上引号。您必须扫描字符串并在这些组合之间填写引号(c!=[0-9]): '{c' 'c:' 'c,' 'c}' '[c' 'c]' ' C'ELSE:你必须检查整个单词。所以你可以用你所有的括号和逗号分割你的字符串,并检查每个单词是否符合数字模式。如果是 -> 你什么都不做。否则 -> 添加引号
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript