javascript - 将逗号分隔符添加到其他有效的 JSON 字符串中

标签 javascript

我从许多文件中读取了一个类似 JSON 的字符串,这些文件具有类似 JSON 的语法,没有用逗号分隔根键值对(例如 "name": "Apple Beery" 而不是 “名称”:“苹果啤酒”,):

var data = `{
    "name": "Apple Beery"
    "phrases": [
        "a",
        "b",
        "It's"
    ]
    "reference": 19
    "friends": [
        {
            "name": "Dog",
            "reference": 14
        },
        {
            "name": "Markus Beery",
            "reference": 30
        }
    ]
    "last": "b"
}`;

有没有办法将动态逗号添加回 JSON 字符串,以便可以像这样解析 JSON:

var data = JSON.parse(`{
    "name": "Apple Beery",
    "phrases": [
        "a",
        "b",
        "It's"
    ],
    "reference": 19,
    "friends": [
        {
            "name": "George Beery",
            "reference": 14
        },
        {
            "name": "Markus Beery",
            "reference": 30
        }
    ],
    "last": "b"
}`);

最佳答案

您可以使用正则表达式来匹配一行中的最后一个字符(除逗号、{[ 之外的任何字符)),并且如果下一行以以下字符开头{[",替换为该字符加逗号。如果下一行可能有数字,请添加 \d 也进入最终字符集:

const data = `{
    "name": "Apple Beery"
    "phrases": [
        "a",
        "b",
        "It's"
    ]
    "reference": 19
    "friends": [
        {
            "name": "Dog",
            "reference": 14
        },
        {
            "name": "Markus Beery",
            "reference": 30
        }
    ]
    "last": "b"
}`;
const json = data.replace(/[^,{[](?=\n *["[{\d])/gm, '$&,');
console.log(JSON.parse(json));

模式

[^,{[](?=\n *["[{\d])

意思是:

  • [^,{[] - 不是逗号、{[
  • 的任何字符
  • (?=\n *["[{\d]) - 前瞻:
    • \n * - 换行符,后跟任意数量的空格,并且
    • ["[{\d] - 除 [{ 或数字
    • 之外的任何字符

关于javascript - 将逗号分隔符添加到其他有效的 JSON 字符串中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53992665/

相关文章:

javascript - 两个字符串在 node js 中不相等,但对我来说看起来相等

javascript - 试图让动态生成的类循环

javascript - 在触发多个更改时仅运行一次昂贵的代码

javascript - 如何在javascript中返回一个整数乘以3的数组?

javascript - Json对象反射

javascript - CORS header 'Access-Control-Allow-Origin' 仅在浏览器/jquery 中丢失,但可以使用 curl

javascript - 在数组和对象之间使用逗号运算符的 Promise.all 如何工作?

Javascript 图片网址验证

javascript - Android 上的 GroPro 实时预览

javascript - 通过链接访问页面时,Rails JavaScript 代码不执行