1

我在解析来自 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":""
   }

但是,在我解析它之后,结果如下:

来自已解析 json 的 javascript 对象

例如 artikels.0.maakwijze.maakwijze_type 设置为 undefined,而在原始 json 中它设置为“lint”。

奇怪的是,如果我只是将原始 json 复制到 chrome 控制台并使用相同的函数 jQuery.parseJSON('copied text') 解析它,所有值都可以

我还用标准的 JSON.parse 替换了 jQuery.parseJSON ,但这给了我相同的结果

任何想法是什么原因造成的?

谢谢!!

4

1 回答 1

3

在客户端我只使用 jQuery 来解析 json 数据。

$.ajax({
......
    success: function(data){
        articleObject = jQuery.parseJSON(data); 

如果您的服务器正在返回Content-Type: application/json,data已经是一个已解析的对象。您不想再次解析它。

没有jQuery.parseJSON(data)它对我有用来源)。

于 2013-05-05T22:01:26.937 回答