【问题标题】:parsing JSON on appcelerator在 appcelerator 上解析 JSON
【发布时间】:2016-05-18 10:34:23
【问题描述】:

我有一个这样的网络服务:

{"person":{"name account":"Jhon Doe","Image":"image/test","Adress":"New York 43","Recomendations":"40"}}

这就是我想要做的,当我打印 datos 时,我得到了整个 json,但是当我尝试只打印名称或图像时,我什么也没有得到

var urll = "example.com/example";
var json;
var xhrr = Ti.Network.createHTTPClient({
    onload: function() {
        json = JSON.parse(this.responseText);
        var datos = JSON.stringify(json);
        var medicos = datos;
        Ti.API.info("Json! "+datos);
}
});
xhrr.open('GET', urll);
xhrr.send();

我尝试了datos[0].persondatos.person,但没有任何效果

【问题讨论】:

    标签: json titanium appcelerator appcelerator-titanium


    【解决方案1】:

    您必须了解包含对象的 JSON 表示 的字符串与对象本身之间的区别。

    您的 json 变量包含对象(JSON.parse(...) 所做的 - 将文本字符串转换为对象)。在对象上,您可以引用您发现的属性。您可以通过两种方式做到这一点:

    json.person.Address
    json.person['name account']
    

    我建议您尽量避免名称不是有效标识符的属性(作为两者中的后者),因为这会使使用它们变得更加困难 - 例如不允许使用点符号。

    另一方面,您的datos 变量包含json 对象的字符串表示形式(正如JSON.stringify(...) 所做的那样——将对象转换为其字符串表示形式)。这意味着 datos 与 this.responseText 相同(因为您首先 parse 它然后 stringify 它返回)。

    所以JSON.stringify(...) 是使对象“人类可读”的绝妙方法,但您需要对象来处理数据。

    希望这能稍微澄清一下这些术语;-)

    /约翰

    【讨论】:

    • 完全正确——为了简化这一点,你不需要在已经使用 JSON.parse() 之后再使用 JSON.stringify()。
    【解决方案2】:

    我只是找到了解决方案:

    Ti.API.info("Json! "+json.person.Recomendations);
    

    【讨论】:

      猜你喜欢
      • 2011-07-03
      • 2015-11-03
      • 2017-05-18
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多