如何解析简单的json响应?

时间:2012-12-28 22:20:02

标签: javascript json sencha-touch

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

5 个答案:

答案 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以获得更好/更安全的方法。

Working example here.

使用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获得的那个。

希望这有帮助!