【问题标题】:Why is only part of my json data being logged?为什么只记录了我的 json 数据的一部分?
【发布时间】:2014-10-09 17:38:24
【问题描述】:

我试图最终将我的 json 数据显示在标签中。但是,当我 console.log json 数据时,只显示最后两个对象。当我将数据传递给标签时,只显示最后一个对象。提前感谢您的帮助!

这是我的代码:

var json = 
    {
        "Question:": " What is my name? ",
        "Answer:": " James ",
        "Question:": " What is my age? ",
        "Answer:": " 31 "

    };

for (var key in json)
{
    if (json.hasOwnProperty(key))
    {
        console.log(key + " = " + json[key]);

    }

}
var label = Ti.UI.createLabel({
    text: key + json[key]
});



win3.add(label);

【问题讨论】:

    标签: javascript json titanium


    【解决方案1】:

    您的问题与 Titanium 无关。在 JavaScript 字典中,您不能有两个具有不同值的相同键。为了证明你在哪里犯了错误,我将重写你的第一行:

    var json = {};
    json["Question:"] = " What is my name? ";
    json["Answer:"] = " James ";
    // We are fine untill now.
    json["Question:"] = " What is my age? ";
    json["Answer:"] = " 31 ";
    // Here you overwrote values for keys "Question:" and "Answer:" which were set above.
    

    为了解决您的问题,我会将您的 json 字典更改为字典数组:

    var i, key, label;
    var json = [
        {
            "Question:": " What is my name? ",
            "Answer:": " James ",
        },
        {
            "Question:": " What is my age? ",
            "Answer:": " 31 "
        }
    ];
    
    for (i in json) {
        for (key in json[i]) {
            label = Ti.UI.createLabel({
                text: key + json[i][key]
            });
            win3.add(label);
        }
    }
    

    【讨论】:

    • 我明白了,谢谢!我花了很多时间想知道发生了什么。我可能需要 javascript 傻瓜哈哈。
    【解决方案2】:

    你的 json 对象键是重复的,javascript 不会抱怨,它只会用第二个值覆盖第一个键值

    【讨论】:

      猜你喜欢
      • 2020-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-04
      • 1970-01-01
      • 2016-12-04
      • 2012-12-14
      • 2021-04-17
      相关资源
      最近更新 更多