angularJS没有解析字符串数组

时间:2015-03-10 13:56:56

标签: arrays json angularjs string parsing

好吧,我一直在抨击这个头上的血腥:

我从服务器返回以下JSON:

{
    "SendDate" : "2015-03-16T22:48:27.747",
    "SendTo" : {
        "ContactIds" : ["28a24538-cdfc-4453-920d-86f57d7eaf22"],
        "GroupIds" : []
    },
    "Message" : "MEETING TIME!!!!!"
}

我已经用几个REST客户端检查了这个 - 这就是回来了。

我使用$ http.get()操作让AngularJS“得到”这个,但我在“ContactIds”值上得到了一个未定义的 - 所以,我在JS控制台中看到的是:

SendDate : "2015-03-16T22:48:27.747"
SendTo: 
  ContactIds: Array[1]
    0: undefined
    length: 1

我没有想法会导致这种情况。

有什么想法吗?

更新: 我附加了一个拦截器并拦截了响应,当我将数据提供给控制台时结果是一样的 - 但是当我使用时:

JSON.stringify(数据)

我可以看到数组中的数据就在那里!

更新2:

好的,现在这让我疯了。我玩过拦截器,如果我将响应字符串化,然后使用JSON.parse() - 它工作正常,但是当我通过响应时,它再次搞砸了。

我通过angular的解析过程一直追溯到“fromJson()”函数。 (下面的代码:)它作为一个字符串进入函数。 (现在这里是Bizzarro部分)

我改变了这样的代码:

function fromJson(json) {

    var obj1 = JSON.parse(json);
    console.log("Obj1:");
    console.log(obj1);

    //my altered angular code
    var obj2 = isString(json) ? JSON.parse(json) : json;  
    console.log("Obj2:");
    console.log(obj2);

    //  Pass to program...
    return obj1;
    //return obj2;

    /*  original angular code:
    return isString(json)
        ? JSON.parse(json)
        : json;
    */
}

如果我运行它并返回obj1,则控制台将obj1的ContactIds“0”索引记录为“undefined” - 但是obj2记录为“28a24538-cdfc-4453-920d-86f57d7eaf22”。

“太棒了!”,我在想 - 所以我返回obj2,但现在它记录未定义但是obj1的“0”索引现在是正确的值。 (WTH?)

所以我反转代码,只是为了看,并返回obj1 - 我会被诅咒 - obj2返回“28a24538-cdfc-4453-920d-86f57d7eaf22”并且obj1未定义。 (这就像戏弄一只猴子。)

以后会在管道中做一些事情 - 或者 - 它可能与数组是GUID字符串有关 - 但我在其他地方使用GUID字符串没有问题。

它也可能是另一个我没有意识到的“角度过程”导致这种情况 - 角度非常令人印象深刻。

无论哪种方式,我都非常困惑。

这太愚蠢了 - 我很惊讶一串字符串是如此困难 - 更糟糕的是,似乎我是唯一一个遇到这个问题的人。 (我昨天研究了六个小时......)

其他任何想法,伙计们?

1 个答案:

答案 0 :(得分:0)

我的上帝啊,我这么愚蠢!!!

首先,我要感谢大家帮助我。

答案是这样的 - 没有问题 ,也就是说,不是Angular或其解析器。

问题是控制台正在记录已转换的数据,这在MY控制器上有错误。 MY端的数据与我在控制器中的列表中的数据不匹配 - (数据库错误)。

BOTTOM LINE:

如果您弹出此错误,请不要自上而下进行故障排除 - 自下而上进行故障排除。

Angular有许多检查和平衡 - 如果你没有得到"出血失败"在整个程序中,错误可能在您的代码中。

谢谢大家的帮助。