BackGround:我正在尝试在SenchaTouch应用程序中解析这个简单的json响应。
json回复:
{
"Australia":
[
{
"Currency": "AustralianDollar",
}
],
"INDIA":
[
{
"Currency": "INR"
}
],
"USA":
[
{
"Currency": "USD"
}
]
}
我想根据国家/地区名称获取国家/地区的货币。
我正在尝试获取货币值,如下所示。
var country = text.Australia.name;
console.log('Country name is'+country);
但它给了我错误。任何人都可以解释如何解析国家名称作为输入并获取货币吗?
谢谢你, Gendaful
答案 0 :(得分:3)
如果text
是JSON字符串,您可以执行此操作:
var obj = JSON.parse(text);
var australia = obj.Australia;
var aussie_currency = australia[0].Currency;
请注意,在数组内部包含Currency
的对象的奇数嵌套会导致需要数组索引引用[0]
。
答案 1 :(得分:2)
在Sencha Touch中你应该使用
var object = Ext.decode(text);
将json字符串转换为Object。 那么,在你的情况下,由于“澳大利亚”不是一个对象而是一个数组,你需要通过
获得第一个元素货币object.Australia[0].Currency;
答案 2 :(得分:1)
最简单的方法是:
var obj = eval("(" + text+ ')');
查看json.org以获得更好/更安全的方法。
使用JSON.parse(text);
查看this compatibility chart。
答案 3 :(得分:0)
如果使用JSON.parse(),最好的方法是这样做。所有浏览器都不支持此功能,但您可以通过https://github.com/douglascrockford/JSON-js
使用Douglas Crockford实现来获得回退答案 4 :(得分:-2)
您可以使用jQuery的$.parseJSON()
之后你可以使用:
var text = $.parseJSON(jsonString); var currency = text.Australia[0].Currency;
作为jsonString,你通过JSON获得的那个。
希望这有帮助!