【问题标题】:How to manually read JSON如何手动读取 JSON
【发布时间】:2011-12-26 15:49:20
【问题描述】:

有人可以给我关于阅读 JSON 的建议吗?我有一个 JSON 格式的 RSS 提要,但不知道如何破译它,以便我可以在代码中使用它。过去我会解析 JSON,但我会从 web 家伙那里得到一个 API,上面写着“关键字专辑是对象列表”。因此,我将解析 JSON 并将“专辑”推入 NSArray。如果重要的话,我正在为 iOS 使用 SBJSON。

我正在尝试从 iTunes 获取 RSS 数据,但我在任何地方都看不到 API 文档,并且不确定如何正确解析数据。

这里是链接: iTunes JSON

【问题讨论】:

    标签: iphone objective-c ios json ipad


    【解决方案1】:

    我只是想让你了解一下,你将不得不挖掘北斗以获得更多数据。这就是您解析以下 JSON 的方式:

    {
      "feed": {
        "author": {
          "name": {
            "label": "iTunes Store"
          },
          "uri": {
            "label": "http://www.apple.com/itunes/"
          }
        },
        "entry": [
          {
            "im:name": {
              "label": "Sexy and I Know It"
            },
            "im:image": [
              {
                "label": "http://a5.mzstatic.com/us/r1000/037/Music/3c/0c/ba/mzi.levtcsmk.55x55-70.jpg",
                "attributes": {
                  "height": "55"
                }
              },
              {
                "label": "http://a2.mzstatic.com/us/r1000/037/Music/3c/0c/ba/mzi.levtcsmk.60x60-50.jpg",
                "attributes": {
                  "height": "60"
                }
              },
              {
                "label": "http://a3.mzstatic.com/us/r1000/037/Music/3c/0c/ba/mzi.levtcsmk.170x170-75.jpg",
                "attributes": {
                  "height": "170"
                }
              }
            ],
    

    假设上述数据存储在一个名为jsonNSString中。

    将json数据读入NSDictionary

    NSDictionary *data = [json JSONValue];
    

    获取feed对象的NSDictionary表示

    NSDictionary *feed = (NSDictionary *) [data objectForKey:@"feed"];
    

    获取author对象的NSDictionary表示

    NSDictionary *author = (NSDictionary *) [feed objectForKey:@"author"];
    

    获取name对象的NSDictionary表示

    NSDictionary *name = (NSDictionary *) [author objectForKey:@"name"];
    

    获取label对象的NSString表示

    NSString *label = (NSString *) [name objectForKey:@"label"];
    

    ...等等

    现在让我们获取入口对象的集合

    获取entry对象的NSArray表示

    NSArray *entry = (NSArray *) [data objectForKey:@"entry"];
    

    让我们从入口集合中获取一个 NSArray 的 Image 对象

    NSArray *images = [[entry objectAtIndex[0]] objectForKey:@"im:image"];
    

    希望能帮助你理解解析流程。

    【讨论】:

    • 这是完美的。我现在完全明白了!
    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2022-06-14
    • 2016-11-17
    • 1970-01-01
    相关资源
    最近更新 更多