【问题标题】:Adding 2 keyvalues to list from JSON object从 JSON 对象中添加 2 个键值到列表
【发布时间】:2023-03-28 05:39:01
【问题描述】:

我想将 JSON 对象中的 2 个键值附加到我在 iPhone 应用程序中的列表中。下面是我的代码,

SBJsonParser *jsonParser = [[[SBJsonParser alloc] init] autorelease];
    NSString *jsonString=[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://test/json/json_data.php"]];

    id response = [jsonParser objectWithString:jsonString error:NULL];

    NSDictionary *feed = (NSDictionary *)response;
    list = (NSArray *)[feed valueForKey:@"fname"];

上面的代码正确地显示了 fname 的值,但是如果我想给它添加 lname 该怎么办。例如,我的对象是 [{"fname":"Bill","lname":"Jones"},{"fname":"John","lname":"Jacobs"}] 我想在列表中显示名称为 Bill Jones、John Jacobs 等。目前它只显示 Bill,John..我尝试做类似 @"fname"@lname 之类的操作,但它不起作用..谁能帮帮我..

【问题讨论】:

    标签: iphone objective-c json ios4


    【解决方案1】:

    观察:来自 JSON 解析器的响应不是字典,而是给定您传入的字符串的数组。您的代码有效,因为 -valueForKey: 是数组将响应的东西。该数组将-valueforKey: 发送给每个元素,并根据响应构建一个数组。

    有两种方法可以做你想做的事(至少)

    1. 显式地遍历数组

      NSMutableArray* list = [[NSMutableArray alloc] init];
      for (id anObject in response)
      {
          [list addObject: [NSString stringWithFormat: @"%@ %@", 
                                                       [anObject objectForKey: @"fName"], 
                                                       [anObject objectForKey: @"lname"]]];
      }
      
    2. 向 NSDictionary 添加类别

      @interface NSDictionary(FullName)
      -(NSString*) fullName;
      @end
      
      @implementation NSDictionary(FullName)
      
      -(NSString*) fullName
      {
          return [NSString stringWithFormat: @"%@ %@", 
                                             [self objectForKey: @"fName"], 
                                             [self objectForKey: @"lname"]];
      }
      
      @end
      

      然后您现有的代码更改为

      list = (NSArray *)[feed valueForKey:@"fullName"];
      

    【讨论】:

    • @developer: NSIndexPath 没有名为 row 的属性。可能您的应用会引发异常,这就是您没有获得任何内容的原因。
    • 非常感谢@JeremyP ..我能够找出我的问题..实际上我在本地创建的列表我将其更改为实例变量,一切似乎都很好。感谢您的所有帮助..一切正常..
    猜你喜欢
    • 2022-01-20
    • 2014-01-01
    • 1970-01-01
    • 2017-11-30
    • 2021-08-03
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 2021-07-24
    相关资源
    最近更新 更多