我有一个无效的JSON字符串,如下所示:
"{one: 'one', two: 'two'}"
我试过使用JSON.parse将其转换为对象,但这不是有效的JSON字符串。 是否有任何函数可以将此无效格式转换为有效的JSON字符串或直接转换为对象?
我有一个无效的JSON字符串,如下所示:
"{one: 'one', two: 'two'}"
我试过使用JSON.parse将其转换为对象,但这不是有效的JSON字符串。 是否有任何函数可以将此无效格式转换为有效的JSON字符串或直接转换为对象?
如果您的示例语法与实际JSON相同,则JSONLint表示您需要为名称和值使用双引号。
仅在这种情况下,使用以下替换调用:
var jsontemp = yourjson.replace((/([\w]+)(:)/g), "\"$1\"$2");
var correctjson = jsontemp.replace((/'/g), "\"");
//yourjson = "{one: 'one', two: 'two'}"
//jsontemp = "{"one": 'one', "two": 'two'}"
//correctjson = "{"one": "one", "two": "two"}"
然而,你应该尝试首先使用有效的Json。
"{one: 'one tree:', two: 'two'}"
这样的字符串转换为"{"one": "one "tree":", "two": "two"}"
(它将匹配任何跟在“:”后面的单词,即使它是值的一部分而不是键),但我认为在这种情况下使用正则表达式替换字符串是最好的方法。正如@Crow EH所说,无风险/理想的方式是首先拥有一个有效的JSON字符串。 - Aylenvar myObj = eval( "x=" + myString );
var myObj = (new Function("return " + myString))();