在appcelerator上解析JSON

时间:2016-02-08 17:02:31

标签: json titanium appcelerator appcelerator-titanium

我有这样的网络服务:

{"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,但没有尝试

2 个答案:

答案 0 :(得分:5)

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

您的json变量包含对象(JSON.parse(...)所做的 - 将文本字符串转换为对象)。在对象上,您可以参考您发现的属性。您可以通过两种方式执行此操作:

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

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

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

所以JSON.stringify(...)是一个很好的方式来使对象" 人类可读"但是您需要该对象来处理数据。

希望这能澄清一点条款; - )

/约翰

答案 1 :(得分:1)

我找到了解决方案:

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