首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在javascript中解析来自php的json时出现奇怪的行为。

在javascript中解析来自php的json时出现奇怪的行为。
EN

Stack Overflow用户
提问于 2013-05-06 05:56:53
回答 1查看 99关注 0票数 1

我在解析来自php源(symfony2)的JSON响应时遇到了一个奇怪的问题。这可能是非常琐碎的事情,但我对javascript不是很熟练,所以我已经在这上面浪费了很多时间。

我的数据库中有一个序列化的php数组,我对其进行反序列化,然后将其转换为JSON。

代码语言:javascript
复制
$response->setContent(json_encode(unserialize($onderdeel->getArticles())));

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

代码语言:javascript
复制
$.ajax({
   ......
    success: function(data){
        articleObject = jQuery.parseJSON(data); 

        }
    });

然而,这给了我一些奇怪的结果,一些值被设置为undefined,而它们应该有一个值。但是,其中一些值是可以的。

这是我在解析php脚本之前得到的原始结果:

代码语言:javascript
复制
   {
       "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,但这给出了相同的结果

你知道这是什么原因吗?

谢谢!!

EN

回答 1

Stack Overflow用户

发布于 2013-05-06 06:01:27

在客户端,我只使用jQuery来解析

数据。

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

如果你的服务器返回Content-Type: application/jsondata将 be a parsed object。你不会想再次解析它的。

没有jQuery.parseJSON(data),it works for me (source)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16389540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档