2

背景:我试图在我的 SenchaTouch 应用程序中解析这个简单的 json 响应。

json响应:

{
    "Australia": 
    [
        {
            "Currency": "AustralianDollar",
        }
    ],
    "INDIA": 
    [
        {
            "Currency": "INR"
        }
    ],
    "USA": 
    [
        {
            "Currency": "USD"
        }
    ]
}

我想根据国家名称获取国家的货币。

我正在尝试获取如下货币值。

var country = text.Australia.name;
console.log('Country name is'+country);

但它给了我错误。谁能解释一下如何解析给出国家名称作为输入并获取货币?

谢谢你,甘达富

4

5 回答 5

3

如果text是 JSON 字符串,您可以这样做:

var obj = JSON.parse(text);
var australia = obj.Australia;
var aussie_currency = australia[0].Currency;

请注意,包含Currency在数组内部的对象的奇怪嵌套导致需要数组索引引用[0]

于 2012-12-28T22:24:44.200 回答
2

在 Sencha Touch 你应该使用

var object = Ext.decode(text);

将 json 字符串转换为对象。然后,在您的情况下,由于“澳大利亚”不是对象而是数组,因此您需要通过以下方式获取第一个元素货币

object.Australia[0].Currency;
于 2012-12-28T22:37:45.383 回答
1

最简单的方法是:

var obj = eval("(" + text+ ')');

查看json.org以获得更好/更安全的方法。

这里的工作示例。

查看此兼容性图表以使用JSON.parse(text);.

于 2012-12-28T22:23:12.127 回答
0

最好的方法是使用 JSON.parse()。所有浏览器都不支持这一点,但您可以通过在https://github.com/douglascrockford/JSON-js使用 Douglas Crockford 实现来获得回退

于 2012-12-28T23:31:41.367 回答
-2

您可以使用 jQuery 的$.parseJSON()

之后,您可以使用:

    var text = $.parseJSON(jsonString);
    var 货币 = text.Australia[0].Currency;

作为 jsonString,您可以通过 JSON 获得。

希望这可以帮助!

于 2012-12-28T22:32:25.553 回答