/ / ako analyzovať reťazec json a iterovať objekt json - javascript, jquery, json

ako analyzovať json reťazec a opakovať json objekt - javascript, jquery, json

Požiadal som ajax na server a vrátil saodpoveď z ako json string.when idem na JSON.stringify, má veľa medzery v response.When sa snažím analyzovať na json objekt dostal chybové správy SyntaxError: JSON.parse: neočakávaný znak na 1. stĺpci v stĺpci 1 údajov JSON.

Nižšie je ukážkový kód:

$.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);
});
}
});

Urobil som niekoľko zmien a potom som sa pokúsil analyzovať:

var data=JSON.stringify(data);
var newJ= JSON.parse(data);
alert("newJ:"+JSON.stringify(newJ));

a získam nasledujúcu rezonanciu:

 "rnrntrn[{"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}]rntrnrn"

Pokúste sa iteráciou nad objektom json získať chybu TypeError: t nie je definované.

Prosím, pomôžte mi vyriešiť vyššie uvedený problém.

Vďaka

odpovede:

1 pre odpoveď č. 1

Myslím, že váš problém môže byť zložitý. Po prvé, v rovnakom rozsahu máte dve „údaje“, ktoré môžu prepísať pôvodnú odpoveď z dôvodu problému s referenciou. Ďalší, ako povedal @adeneo, bol json na strane servera poškodený. Skúste to zmeniť. Vytvoril som JSFiddle na analýzu oboch verzií vašich odpovedí JSON, pretože nie sme si istí, ako presne na základe vášho príspevku vyzerá dátová odpoveď..

Ukážka kódu tu 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 = ""rnrntrn[{"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}]rntrnrn""

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);
});