在iOS上下载和解析JSON工具包

时间:2011-09-29 01:14:57

标签: ios json parsing jsonkit

我正在尝试将其从网络服务器解析为iOS中的tableview

{
  "transactions": [
    {
    "ID": "350",
    "description": "Macbook Pro 17 inch",
    "price": "2811.83"
    },
    {
    "ID": "351",
    "description": "Macbook - white",
    "price": "1720.10"
    },
    {
    "ID": "352",
    "description": "iPad 2",
    "price": "650.00"
    },
    {
    "ID": "353",
    "description": "Macbook Pro 17 inch",
    "price": "3233.98"
    },
    {
    "ID": "354",
    "description": "Macbook Pro 15 inch",
    "price": "2100.55"
    },
    {
    "ID": "355",
    "description": "Macbook Air",
    "price": "899.99"
    },
    {
    "ID": "356",
    "description": "Mac Pro",
    "price": "3400.77"
    }
  ]
}

我唯一想要的就是描述和价格。我需要将每个项目的价格相加并获得总额。每个交易名称都需要存储在NSArray中,然后显示在UITableView

有任何帮助吗? JSONkit没有给我SBJSON解析器

2 个答案:

答案 0 :(得分:4)

我非常喜欢JSONKit因为它的简单性和速度。你必须意识到,它返回的是作为对象的顶层构造 - 所以你必须考虑它。它将是一个NSDictionary(所以你可以对它进行类型转换),它将有一个关键的“事务”。

此键将返回NSDray的NSDray对象,每个对象都有密钥ID,描述和价格。

这样的事情(例如,itemListData是从URL获取的JSON数据):

JSONDecoder *decoder = [JSONDecoder decoderWithParseOptions:JKParseOptionStrict];
NSData *immutableItemList = [itemListData copy];
NSArray *returnedData = (NSArray *) [[decoder objectWithData:immutableItemList] objectForKey:@"transactions"];

因此,我们获取原始JSON数据,实例化解码器,然后将其解码为字典 - 并检索字典中的1个对象(在这种情况下为数组,因为它就是这样)。对新手来说还不错,嗯?

(我应该添加 - 我制作NSData的不可变副本的原因是,此代码段是在connectionDidFinishLoading方法中触发的异步下载。)

答案 1 :(得分:1)

嘿,所以我过去所做的就是去facebook并下载他们的开发者sdk。因为sdk是一个很棒的JSON解析工具。你可以在http://developers.facebook.com/docs/reference/iossdk/找到它 然后,您只需将其添加到项目中并在标题中执行

 #import "JSON.h"

然后当你得到那个字符串时,你说

NSDictionary *data = [my_data_string JSONValue];
NSArray *transactions = [data objectForKey:@"Transactions"];

这应该有效:)