javascript 如何解析这种非标准JSON格式?

6l7fqoea  于 2022-12-17  发布在  Java
关注(0)|答案(2)|浏览(262)

我想知道一些在带有PM2的VPS上运行的进程信息。但是,由于PM2返回的JSON字符串,我们无法运行JSON.parse(),因为JSON已损坏。
PM2返回内容的示例:

'{data: 0, informations: "hello", name: "test"}'

但是,如果你知道JSON.parse是如何工作的,你就知道问题所在了,我们无法解析这个字符串。
你有办法用别的函数来解决这个问题吗?
先谢了。

hgtggwj0

hgtggwj01#

看起来你的字符串是用常规JavaScript或JSON5编码的。JSON5是一个库,它允许JSON以类似于常规JavaScript的方式定义(没有不必要的"等)。安装该库并使用JSON5.parse()解析字符串。参考:https://json5.org/

nom7f22z

nom7f22z2#

下面是一个针对你的非json格式的解决方案,诀窍是确保键的两边有双引号...

function customParse(string){
  return JSON.parse(string
                    .replace(/\s|"/g, '')        // Removes all spaces and double quotes
                    .replace(/(\w+)/g, '"$1"') // Adds double quotes everywhere
                    .replace(/"(\d+)"/g, '$1')   // Removes double quotes around integers
                   )
}

// Testing the function
let PM2_string = '{data: 0, informations: "hello", name: "test"}'
let PM2_obj = customParse(PM2_string)

// Result
console.log(PM2_obj)
console.log(PM2_obj.data)
console.log(PM2_obj.informations)
console.log(PM2_obj.name)

相关问题