在Objective-C中解析JSON最漂亮的方法?

Fil*_*ren 3 macos json objective-c ios

我试图从API解析一些JSON,但我"解密"JSON的子元素"麻烦".我这样做的方法似乎更漂亮.

我试图解析http://data.mtgox.com/api/2/BTCUSD/money/ticker_fast?pretty,我得到

{
    "result": "success",
    "data": {
        "last_local": {
            "value": "785.00000",
            "value_int": "78500000",
            "display": "$785.00",
            "display_short": "$785.00",
            "currency": "USD"
        },
        "last": {
            "value": "785.00000",
            "value_int": "78500000",
            "display": "$785.00",
            "display_short": "$785.00",
            "currency": "USD"
        },
        "last_orig": {
            "value": "785.00000",
            "value_int": "78500000",
            "display": "$785.00",
            "display_short": "$785.00",
            "currency": "USD"
        },
        "last_all": {
            "value": "785.00000",
            "value_int": "78500000",
            "display": "$785.00",
            "display_short": "$785.00",
            "currency": "USD"
        },
        "buy": {
            "value": "785.00000",
            "value_int": "78500000",
            "display": "$785.00",
            "display_short": "$785.00",
            "currency": "USD"
        },
        "sell": {
            "value": "785.50000",
            "value_int": "78550000",
            "display": "$785.50",
            "display_short": "$785.50",
            "currency": "USD"
        },
        "now": "1386421846023718"
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我要访问value在last在data.我这样做的方法是嵌套一堆objectForKey:string - 比如

[[[[[self getInformationFrom:mtgox] objectForKey:@"data"] objectForKey:@"last"] objectForKey:@"value"] floatValue];

基本上getInformationFrom:mtgox,NSDSON与NSJSONSerialization一起返回的是什么.

有没有更好的方法来获取此JSON数据的价值?

Dru*_*erB 6

您可以使用字典文字:

[[self getInformationFrom:mtgox][@"data"][@"last"][@"value"] floatValue];
Run Code Online (Sandbox Code Playgroud)

或者您可以使用KVC:

[[[self getInformationFrom:mtgox] valueForKeyPath:@"data.last.value"] floatValue];
Run Code Online (Sandbox Code Playgroud)