[英]how to parse json string and iterate json object
我向服務器發出ajax請求並從json字符串獲取響應。當我使用JSON.stringify時,它在響應中有很多空白。當我嘗試解析json對象時收到錯誤消息gastaxe SyntaxError: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對象,得到錯誤TypeError: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);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.