无法解析包含unicode十六进制字符的JSON字符串

Sar*_*ang 1 javascript jquery json

var mystring = '{"Customers":[{"CustomerCity":"Zaragoza","CustomerFName":"Ana","CustomerAddress":"C/ El Temple, 9 2\\xbaB","CustomerCountry":"es"}]}';

var myparsestring = JSON.parse(mystring);
Run Code Online (Sandbox Code Playgroud)

错误:

JSON中出现意外的标记x

T.J*_*der 7

这只是无效的JSON,请参阅json.org上的字符串规则.\xJSON 没有逃脱.本\xbaB应该是一个Unicode转义,\u0baB(注意,必须是四位十六进制数字):

var mystring ='{"Customers":[{"CustomerCity":"Zaragoza","CustomerFName":"Ana","CustomerAddress":"C/ El Temple, 9 2\\u0baB","CustomerCountry":"es"}]}';

var obj = JSON.parse(mystring);
console.log(obj);
Run Code Online (Sandbox Code Playgroud)

您可以尝试预处理字符串:

mystring = mystring.replace(/\\x([0-9a-f]{1,4})/gi, function(m, c0) {
    return "\\u" + ("0000" + c0).slice(-4);
});
Run Code Online (Sandbox Code Playgroud)

var mystring ='{"Customers":[{"CustomerCity":"Zaragoza","CustomerFName":"Ana","CustomerAddress":"C/ El Temple, 9 2\\xbaB","CustomerCountry":"es"}]}';

// Fixing it
mystring = mystring.replace(/\\x([0-9a-f]{1,4})/gi, function(m, c0) {
    return "\\u" + ("0000" + c0).slice(-4);
});

var obj = JSON.parse(mystring);
console.log(obj);
Run Code Online (Sandbox Code Playgroud)

......但是真的,这将是很多更好,所以它产生有效的JSON,和上面是一个非常幼稚的修复来修复JSON的来源.