我正在尝试将字符串传递给JSON对象但是使用特殊字符我无法将其转换为:
字符串看起来像没有任何特殊字符:
Var JsonString = "{"IdKey":"100008000","IdNumber":"50111112","IdType":"Single","IdTitle":"Singel Id","Name":"Nick"}"
我这样做
JsonString = '{"PersonDetails":[' + JsonString + ']}';
var jsonObject = jQuery.parseJSON(JsonString);
这里在JsonObject中我得到一个包含类详细对象的数组对象(下面提到)。 我正在添加一个字符串PersonDetails,因为有可能我可能会得到多个记录,所以我将它转换为数组。在该数组内部将有多个对象的详细信息类。
但有时我会得到一个字符串:
Var JsonString = "{"IdKey":"100008000","IdNumber":"50111112","IdType":"Single","IdTitle":"Single id “VIP”","Name":"Nick"}"
此处 IdTitle为:“Single id”VIP“” 这也可以通过解码所有特殊字符转换为json对象,但在这种情况下,我得到一个字符串数组而不是细节对象数组。
Class details
{
Public string IdKey;
Public string IdNumber;
Public string IdType;
Public string IdTitle;
Public string Name;
}
答案 0 :(得分:0)
如果你可以转换这个
var JsonString = "{"IdKey":"100008000","IdNumber":"50111112","IdType":"Single","IdTitle":"Singel Id","Name":"Nick"}";
带双引号的成 单引号
var JsonString = '{"IdKey":"100008000","IdNumber":"50111112","IdType":"Single","IdTitle":"Singel Id","Name":"Nick"}';
然后JSON解析将正常工作,不会出现任何解析错误。 var JsonObject = JSON.parse(JsonString);
答案 1 :(得分:-1)
以下是可以处理错误JSON的自定义函数,可以将其转换为有效/正确的JSON对象,也可以更新它以处理任何类型的错误JSON。
var JsonString = '{"IdKey":"100008000","IdNumber":"50111112","IdType":"Single","IdTitle":"Singel Id "VIP"","Name":"Nick"}'; // Incorrect JSON Object
function convertToJSON() {
var newJsonStringObj = {};
JsonString = JsonString.replace(/["{}]/g, '');
var JsonStringArray = JsonString.split(",");
var arrKey = '';
var arrVal = '';
var JsonStringArrayKeyValue = '';
for(var i=0; i<JsonStringArray.length; i++) {
arrKey = '';
arrVal = '';
JsonStringArrayKeyValue = '';
JsonStringArrayKeyValue = JsonStringArray[i].split(":");
arrKey = JsonStringArrayKeyValue[0];
arrVal = JsonStringArrayKeyValue[1];
newJsonStringObj[arrKey] = arrVal;
}
console.log(newJsonStringObj); // Correct JSON Object
}
convertToJSON();