mad*_*fox 8 javascript jquery interpolation json jsp
我想做的很简单.将包含json对象的此数组解析为Javascript数组.
var merchantsJson = JSON.parse('[{"id":61693,"name":"Más"},{"id":61690,"name":"\u0027\u0022\u003C/div\u003E"}]');
Run Code Online (Sandbox Code Playgroud)
但unicode字符似乎打破了解析器.在chrome控制台中,我看到"Uncaught SyntaxError:Unexpected token <"
多一点信息.以上是代码评估的内容.实际上,代码包含一个jsp表达式.
var merchantsJson = JSON.parse('${jsonArr}');
Run Code Online (Sandbox Code Playgroud)
如果我删除单引号,没有问题,但eclipse给我一个"缺少分号"错误消息.是否有可能用我正在尝试的引号解析数组?
Exp*_*lls 12
插值${jsonArr}已经是一个JavaScript对象.当你把它包起来'${jsonArr}'把它变成一个字符串,你必须使用JSON.parse.
没有必要把它变成一个字符串.你可以这样做var merchantsArray = ${jsonArr}.JSON构造已经可以与JavaScript代码互操作.
因为"你的字符串文字中有一个额外的编码\u0022:
> '[{"id":61693,"name":"Más"},{"id":61690,"name":"\u0027\u0022\u003C/div\u003E"}]'
[{"id":61693,"name":"Más"},{"id":61690,"name":"'"</div>"}]
Run Code Online (Sandbox Code Playgroud)
简而言之,字符串中的JSON无效.您需要通过使用转义字符串文字("'\u0022</div>")中的引号的unicode转义序列
JSON.parse('[{"id":61693,"name":"Más"},{"id":61690,"name":"\u0027\\u0022\u003C/div\u003E"}]'
// ^
Run Code Online (Sandbox Code Playgroud)
或转义引号字符("'\"</div>"):
JSON.parse('[{"id":61693,"name":"Más"},{"id":61690,"name":"\u0027\\\u0022\u003C/div\u003E"}]');
// ^^
Run Code Online (Sandbox Code Playgroud)
但是,实际上根本不需要使用JSON.只需将JS数组文字输出到您的代码中:
var merchantsJson = ${jsonArr};
Run Code Online (Sandbox Code Playgroud)
试图取代\u有\\u.如果不这样做,JSON解析器会收到已经解码的Unicode,这会创建污染的JSON.
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |