Javascript 如何使用不带双引号的JSONparse
我有字符串Javascript 如何使用不带双引号的JSONparse,javascript,jquery,Javascript,Jquery,我有字符串“字段:1,计数:22” 如何解析对象 如果这是您真正的问题,请不要提供无引号的密钥。以下代码可能会起作用(提供的键不包括空格) 但我认为您确实应该检查数据来自何处,并尝试获取该源以提供有效的JSON,因为正如其他人所指出的,您提供的不是。以下代码可能会起作用(提供的键不包括空格) 但我认为您真的应该检查数据来自何处,并尝试让该源为您提供有效的JSON,因为正如其他人所指出的,您提供的并非如此。您可以尝试以下方法: function getJSON(str){ // get
“字段:1,计数:22”
如何解析对象
如果这是您真正的问题,请不要提供无引号的密钥。以下代码可能会起作用(提供的键不包括空格)
但我认为您确实应该检查数据来自何处,并尝试获取该源以提供有效的JSON,因为正如其他人所指出的,您提供的不是。以下代码可能会起作用(提供的键不包括空格) 但我认为您真的应该检查数据来自何处,并尝试让该源为您提供有效的JSON,因为正如其他人所指出的,您提供的并非如此。您可以尝试以下方法:
function getJSON(str){
// get lines i.e. "field: 1"
var lines = str.split(",");
for (var i = lines.length - 1; i >= 0; i--) {
// separate key from values. "[field, 1]"
var keyValue = lines[i].split(": ");
// add the quotes
lines[i] = "\"" + keyValue[0] + "\": " + keyValue[1];
}
// replace single quotes with double quotes and join array with comma
// parsing it to an JSON object
return JSON.parse(("{" + lines.join(", ") + "}").replace(/'/g, "\""));
}
但是@Forbesmyester的解决方案非常好。。。
无论如何,希望它能有所帮助。您可以尝试以下方法:
function getJSON(str){
// get lines i.e. "field: 1"
var lines = str.split(",");
for (var i = lines.length - 1; i >= 0; i--) {
// separate key from values. "[field, 1]"
var keyValue = lines[i].split(": ");
// add the quotes
lines[i] = "\"" + keyValue[0] + "\": " + keyValue[1];
}
// replace single quotes with double quotes and join array with comma
// parsing it to an JSON object
return JSON.parse(("{" + lines.join(", ") + "}").replace(/'/g, "\""));
}
但是@Forbesmyester的解决方案非常好。。。
无论如何,希望它能有所帮助。您可能需要编写自己的解析器。为了澄清Salman的评论:因为这不是有效的JSON,您不能使用JSON解析器。您的意思是不使用eval?您将需要某种类型的evalperhaps,它将更容易引用replace。您应该拆分它并将其转换为object。。没有其他方法…您可能需要编写自己的解析器。为了澄清Salman的评论:因为这不是有效的JSON,您不能使用JSON解析器。您的意思是不使用eval?您将需要某种类型的evalperhaps,它将更容易引用replace。您应该拆分它并将其转换为object。。没有别的办法。。。