我在解析来自 php 源(symfony2)的 JSON 响应时遇到了一个奇怪的问题。这可能是一件非常微不足道的事情,但我对 javascript 不是很熟练,所以已经在这方面浪费了很多时间。
我的数据库中有一个序列化的 php-array,我将其反序列化然后转换为 JSON。
$response->setContent(json_encode(unserialize($onderdeel->getArticles())));
在客户端我只使用 jQuery 来解析 json 数据。
$.ajax({
......
success: function(data){
articleObject = jQuery.parseJSON(data);
}
});
然而,这给了我一些奇怪的结果,一些值被设置为未定义,而它们应该有一个值。但是有些值是可以的。
这是我在解析 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('copied text') 解析它,所有值都可以
我还用标准的 JSON.parse 替换了 jQuery.parseJSON ,但这给了我相同的结果
任何想法是什么原因造成的?
谢谢!!