在 jQuery 调用中编码 json
encoding json in jQuery call
>我有一个这样的json:
{
"One'-test": {
"name" : "One'-test",
"link" : "xxx"
},
"Two'-test": {
"name" : "Two'-test",
"link" : "yyy"
}
}
在我的javascript文件中,我使用jQuery调用
var myJson;
jQuery.getJSON('path/myJson.json', function (data) {
myJson = data;
});
不幸的是,调用没有成功,从某种意义上说,myJson = data
没有执行(我试图在语句之前放置一个控制台消息,但没有执行),变量myJson
仍然未定义(我等待调用结束与$.when
语句并打印出myJson
)。问题很可能是名称One'-test
和Two'-test
的格式(字符"''"和"-"),因为路径是正确的(我很确定)。我不能改变这些名字,那么我必须考虑别的事情。知道吗?我尝试使用这样的 ajax 调用:
function getJson(myJson){
$.ajax({
type: "GET",
url: "path/myJson.json",
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success:
function(data) {
myJson = data;
}
});
}
但结果还是一样。
编辑
如果我尝试使用以下命令执行相同的代码:
{
"Onetest": {
"name" : "One'-test",
"link" : "xxx"
},
"Twotest": {
"name" : "Two'-test",
"link" : "yyy"
}
}
它成功了。这是"糟糕格式"的又一证明
如果我尝试使用以下命令执行相同的代码:
。
它成功了。这是"糟糕格式"的又一证明
好的,这告诉我们正在使用的 JSON 解析器将这些"One'-test"
字符串解释为无效。你可以这样读 http://json.org(似乎 http://jsonlint.com 的人这样做,因为它也拒绝这些字符串),尽管RFC说
任何字符都可以转义。
。它认为,虽然毫无意义,但-
之前的'
不应该是一个错误。但也许 RFC 意味着任何字符都可以作为 Unicode 转义或类似内容进行转义。
事情是你说你不能做的事情:修复 JSON,在-
之前删除最好的不必要最坏问题'
。
下一个最好的办法是做一些预处理。你可以通过告诉jQuery不要尝试解析JSON来进行直接的字符串替换:
$.ajax({
type: "GET",
url: "path/myJson.json",
data: {},
dataType: "text", // <=== Don't parse it
success: function(data) {
// ...
}
});
然后在success
做:
myJson = JSON.parse(data.replace(/''-/g, "-"));
。当然,这是一个相当幼稚的替代品。
这是第二位的演示:
var data =
'{' +
'"One'-test": {' +
' "name" : "One'-test",' +
' "link" : "xxx" ' +
' },' +
'"Two'-test": {' +
' "name" : "Two'-test",' +
' "link" : "yyy" ' +
' }' +
'}';
var myJson = JSON.parse(data.replace(/''-/g, "-"));
snippet.log(myJson["One-test"].name); // "One-test"
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
相关文章:
- Json在完整日历中对数据进行了编码
- 如何将JSON编码的PHP数组发送到同一页面上的数据表
- Json在js中对数据循环进行编码
- JSON编码一个HTML列表——所有子项都显示在所有父项上
- 如何将这些数据编码为JSON中的父/子结构
- 无法读取js中的php JSON编码数据
- 隐藏HTML元素中的JSON编码和解码
- 获取 JSON 编码响应中的数组键
- 编码为深度嵌套对象的 HTML 字段 json
- 在 jQuery 调用中编码 json
- 如何在 JS 上使用 PHP 变量 (fetch_array) ?(JSON 编码)
- 将 JSON 编码的 PHP 变量传递给 HighCharts
- 在URL中编码JSON时是否存在XSS威胁
- 如何通过jQuery Ajax发布数据在PHP中编码JSON
- javascript:uri编码json使post数据变得更大.可供替代的
- JSON -需要javascript数组内部的数组和编码JSON
- 我如何在Jquery中编码json对象周日历主题解析json
- Jquery ajax字符编码json
- Angular JS没有正确编码JSON来传递get请求
- 从javascript编码json和解码使用php