正在分析未引用的JSON字符串



解析未引用JSON字符串的最简单方法是什么?
例如,如果我有以下内容:

{property1:value1,property2:value2}

以下抛出错误:

JSON.parse( badJSONString );

因为正确的JSON应该引用键和值:{"property1":"value1"}

如果您的数据是一致的(这可能是一个很大的If(,您可以用一个非常简单的函数来处理字符串。如果某些字符串的值中有逗号或冒号,或者像'{property1:val:ue1 ,property2:val,ue2}'这样的字符串,以下操作将失败,但如果数据中没有一些分隔符,这些字符串无论如何都会有问题。

let bad = '{property1:value1,property2:value2}'
let obj = bad.slice(1, -1).split(/s?,s?/)
.map(item => item.split(':'))
.reduce((a, [key, val]) => Object.assign(a, {[key]: val}), {})
console.log(obj)

一个选项可以是:

var initial = "{property1:value1,property2:value2}"; // string (unquoted JSON)
var cleaned = initial.trim().substring(1, initial.length - 1); // remove `{` and `}`
var kvPair = cleaned.split(',');              // get an array like ["property1:value1", "property2:value2"]
var final = {};
var split;
for (var i = 0, l = kvPair.length; i < l; i++) {
split = kvPair[i].split(':');               // get an array like ["property1","value1"]
final[split[0].trim()] = split[1].trim();   // add value X to property X (remove whitespaces at the beginning and end)
}
console.log(final)

jsfiddle

最新更新