我在解析来自php源(symfony2)的JSON响应时遇到了一个奇怪的问题。这可能是非常琐碎的事情,但我对javascript不是很熟练,所以我已经在这上面浪费了很多时间。
我的数据库中有一个序列化的php数组,我对其进行反序列化,然后将其转换为JSON。
$response->setContent(json_encode(unserialize($onderdeel->getArticles())));在客户端,我只使用jQuery来解析json数据。
$.ajax({
......
success: function(data){
articleObject = jQuery.parseJSON(data);
}
});然而,这给了我一些奇怪的结果,一些值被设置为undefined,而它们应该有一个值。但是,其中一些值是可以的。
这是我在解析php脚本之前得到的原始结果:
{
"onderdeel":{
"onderdeel_id":"1546",
"onderdeel_type":"overgordijnen160",
"onderdeel_naam":"",
"onderdeel_opmerkingen":"",
"berekend_prijs":"0",
"status":"",
"active_artikel_id":"0",
"naam_ruimte":"",
"opmerkingen":""
},
"artikels":[
{
"ruimte":"",
"opmerkingen":"",
"korting":"",
"berekend_aantal_banen":"2",
"aantal_banen_zelf_ingegeven":"",
"berekend_hoeveelheid":"400",
"berekend_multiplicator":"1.9",
"berekend_valide":"",
"berekend_prijs_met_korting":"0.00",
"berekend_prijs":"20040040.00",
"stap2":{
"valide":"valide",
"hoogte":"100",
"breedte":"100",
"banen":"stel",
"stof":{
"id":"9",
"naam":"AGRA",
"modelnummer":"123456",
"stofbreedte":"140.00",
"rapporthoogte":"100.00",
"kleur":"nul",
"prijspermeter":"100.00",
"wasvoorschriften":"COOL WASH COOL IRON",
"stock":" "
},
"railtype":{
"id":"7",
"naam":"rails type 1",
"modelnummer":"RT-2",
"stock":"200.00 stuks",
"rapporthoogte":"null",
"prijspermeter":"null",
"wasvoorschriften":"null"
}
},
"maakwijze":{
"status":"",
"maakwijze_type":"lint",
"plooi":"",
"retour_plooi":"",
"cm_plooi":"",
"hoofdje":"100",
"berekende_string":"LINT > gewone voering",
"voering_string":"gewone voering",
"voering":{
"voering_id":"",
"voering_prijs":"",
"voering_onderdeel":"",
"voering_type":""
},
"voering_aan":"true",
"confectie":{
"confectie_id":"2",
"confectie_prijs":"10000000.00",
"confectie_zoom":"25.31",
"confectie_onderdeel":"OG < 160",
"confectie_type":"LINT > gewone voering"
},
"valide":"valide",
"loodjes":"loodjes"
},
"prijs":{
"prijs_valide":"",
"prijs_korting":"",
"prijs_plaatsing":"",
"prijs_berekend_voor_artikel":"",
"prijs_berekend_voor_artikel_met_korting":"",
"prijs_berekend_stofprijs":"40000",
"prijs_berekend_confectieprijs":"20000000",
"prijs_berekend_prijslood":"40",
"prijs_berekend_voering":"0",
"prijs_railtype_prijs":""
}
}
],
"onderdeel_naam":"",
"onderdeel_opmerkingen":""
}然而,在我解析它之后,结果如下:

例如,artikels.0.maakwijze.maakwijze_type被设置为undefined,而在原始json中它被设置为'lint‘。
奇怪的是,如果我只是将原始的json复制到chrome控制台,并使用相同的函数jQuery.parseJSON(‘复制的文本’)解析它,所有的值都是ok的。
我还用标准的JSON.parse替换了jQuery.parseJSON,但这给出了相同的结果
你知道这是什么原因吗?
谢谢!!
发布于 2013-05-06 06:01:27
在客户端,我只使用jQuery来解析
数据。
$.ajax({ ......成功: function(data){ articleObject = jQuery.parseJSON(data);
如果你的服务器返回Content-Type: application/json,data将 be a parsed object。你不会想再次解析它的。
没有jQuery.parseJSON(data),it works for me (source)。
https://stackoverflow.com/questions/16389540
复制相似问题