Javascript 如何在Node.js ES6中解析带有未缩放属性的JSON字符串

Javascript 如何在Node.js ES6中解析带有未缩放属性的JSON字符串,javascript,json,node.js,parsing,ecmascript-6,Javascript,Json,Node.js,Parsing,Ecmascript 6,我有以下字符串,其中包含具有未缩放属性的JSON,我想在Node.js/ES6中解析它: const A="{prop1=null, prop2=SOME-VALUE, prop3=[{prop4=2018-04-13T19:07:47.008Z}]}" 如何正确解析,或者是否有比JSON.parse更安全的JSON解析器,因为: JSON.parse("{prop1=null, prop2=SOME-VALUE, prop3=[{prop4=2018-04-13T19:07:47.008Z}

我有以下字符串,其中包含具有未缩放属性的JSON,我想在Node.js/ES6中解析它:

const A="{prop1=null, prop2=SOME-VALUE, prop3=[{prop4=2018-04-13T19:07:47.008Z}]}"
如何正确解析,或者是否有比JSON.parse更安全的JSON解析器,因为:

JSON.parse("{prop1=null, prop2=SOME-VALUE, prop3=[{prop4=2018-04-13T19:07:47.008Z}]}")
正在抛出错误:

VM2683:1 Uncaught SyntaxError: Unexpected token p in JSON at position 1
at JSON.parse (<anonymous>)
VM2683:1未捕获的语法错误:JSON中位置1处的意外标记p
在JSON.parse()处
更新:


这是从外部系统获取的无效JSON,我想用一些可能处理类似内容的解析器来解析它,或者使用JSON的方法(lib)使其成为有效的JSON。解析之后这不是JSON,没有JSON解析器能够处理它:

  • JSON使用冒号(而不是等号)将键与值分开
  • 作为字符串的JSON键和值必须用引号括起来“”

根据您的更新,您需要编写一个自定义字符串解析器,将源代码转换为一些有效的JSON字符串,然后使用
JSON.parse()
——或者您甚至可以忽略
JSON.parse
方法,如果需要的话直接创建对象(这将是一个痛苦的过程)


您可以使用正则表达式或任何字符串操作方法,例如将
=
转换为
,等等。

有许多库能够以松散的方式解析无效的JSON,例如。问题是这个字符串不是JSON。由于字符串不是有效的JS,因此也无法对其求值

无法使用常规的
replace
处理字符串,因为它遵循某些语法,例如
=
分隔符可以替换为
,作为迈向JSON的一步,但包含
=
字符的值不应受到影响。应该首先对字符串进行标记,并根据预期的语法进行处理

有些库可能有助于标记化,如
esprima
esprima.tokenize()
),但必须根据特定的文件格式对不一致性进行大量处理:

  • null
    属性值,解析器应该如何确定它是
    null
    还是
    'null'
    字符串

  • 属性值不是用引号括起来的,应该如何处理空白

  • 等等


这不是JSON。这是从哪里得到的?这不是JSON,您可能需要手动解析=和之间的内容,如果您无法在JSONconst中得到这一点,那么A实际上是一个字符串……实际的格式是什么?外部系统是什么?它希望您如何处理这些数据?我不会将其作为答案发布,因为它是黑客攻击的,可能会失败,但以下是尝试的开始: