如何解析 JSON 字符串和迭代 JSON 对象
how to parse json string and iterate json object
我向服务器发出了ajax请求并从json字符串中返回响应。当我选择JSON.stringify时,它的响应中有很多空格。当我尝试解析json对象时收到错误消息 语法错误: JSON.parse:JSON数据第 1 行第 1 列处的意外字符。
下面是示例代码:
$.post("http://example.com/index.cfm?fuseaction=shopping.admin&stamps=getStampsRates&Order_No="+order_id+"&stamps_service_type="+selectedServiceType+"",function(data,status)
{
if(status=="success")
{
var data=JSON.parse(data);
//original resonse aspected from server
// var json ='[{"PACKAGETYPE":"Postcard","AMOUNT":0.34},{"PACKAGETYPE":"Letter","AMOUNT":0.48},{"PACKAGETYPE":"Large Envelope or Flat","AMOUNT":0.98},{"PACKAGETYPE":"Thick Envelope","AMOUNT":1.93},{"PACKAGETYPE":"Package","AMOUNT":1.93},{"PACKAGETYPE":"Large Package","AMOUNT":1.93}] ';
$.each(data, function(idx, obj) {
alert(obj.PACKAGETYPE);
});
}
});
我做了一些更改,然后尝试解析:
var data=JSON.stringify(data);
var newJ= JSON.parse(data);
alert("newJ:"+JSON.stringify(newJ));
并获得以下共鸣:
"'r'n'r'n't'r'n[{'"PACKAGETYPE'":'"Large Envelope or Flat'",'"AMOUNT'":2.69},{'"PACKAGETYPE'":'"Thick Envelope'",'"AMOUNT'":2.69},{'"PACKAGETYPE'":'"Package'",'"AMOUNT'":2.69},{'"PACKAGETYPE'":'"Large Package'",'"AMOUNT'":2.69}]'r'n't'r'n'r'n"
并尝试在 json 对象上方迭代,得到错误类型错误:t 未定义。
请帮助我解决上述问题。
谢谢
我认为
你的问题可能很复杂。首先,在同一范围内,您有两个"数据",由于参考问题,它们可能会覆盖原始响应。另一个,就像@adeneo所说的,json在服务器端的格式不正确。所以试着改成这个。我创建了一个 JSFiddle 来解析您的 JSON 响应的两个版本,因为我们不确定根据您的帖子数据响应的确切外观。
JSFiddle 上的代码示例
var json ='[{"PACKAGETYPE":"Postcard","AMOUNT":0.34},{"PACKAGETYPE":"Letter","AMOUNT":0.48},{"PACKAGETYPE":"Large Envelope or Flat","AMOUNT":0.98},{"PACKAGETYPE":"Thick Envelope","AMOUNT":1.93},{"PACKAGETYPE":"Package","AMOUNT":1.93},{"PACKAGETYPE":"Large Package","AMOUNT":1.93}]';
var json1 = '"'r'n'r'n't'r'n[{'"PACKAGETYPE'":'"Large Envelope or Flat'",'"AMOUNT'":2.69},{'"PACKAGETYPE'":'"Thick Envelope'",'"AMOUNT'":2.69},{'"PACKAGETYPE'":'"Package'",'"AMOUNT'":2.69},{'"PACKAGETYPE'":'"Large Package'",'"AMOUNT'":2.69}]'r'n't'r'n'r'n"'
var obj = JSON.parse(json);
$.each(obj, function(i, item) {
console.log(obj[i].PACKAGETYPE);
});
json1 = json1.split('[')[1].split(']')[0].replace('''','');
json1 = '[' + json1 + ']';
console.log(json1);
var obj = JSON.parse(json1);
$.each(obj, function(i, item) {
console.log(obj[i].PACKAGETYPE);
});
相关文章:
- 在ejs-partial中对JSON对象进行迭代
- 如何在Jquery中迭代JSON数组
- 从JSON API结果迭代时未定义
- 使用对象通过JSON进行迭代
- 如何使用其他地方指定的访问信息访问嵌套的json对象,而不使用eval或迭代
- JS对象->来自jquery ajax的JSON提交->php迭代
- 对数组中的json对象进行迭代
- 如何迭代json对象结构以只获取名称
- 在JSON数组中进行迭代,并为其元素设置样式
- 我需要迭代一个JSON数组——不知道如何做到——已经搜索过了,但仍然可以'我一点也不知道
- 使用jstl c:forEach在迭代jsp bean上创建javascript json对象
- 使用JavaScript对JSON对象进行迭代无法处理此数据
- 使用javascript在数组中迭代和映射JSON
- 通过json值进行迭代
- 迭代 JSON 文件并且未在 Javascript 中正确返回结果
- 实现json迭代
- 复杂的结构化 JSON 迭代
- 多维数组上的Json迭代给出了未定义的错误
- JSON迭代结果…可以排序
- 帮助JSON迭代