我有这样的网络服务:
{"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].person
,datos.person
,但没有尝试
答案 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);