【问题标题】:json parsing data store in array in ios 7json解析数据存储在ios 7中的数组中
【发布时间】:2014-09-10 05:54:58
【问题描述】:

这是我从 API 得到的响应

 {
Result =     {
    Area =         (

        "Shah-e-Alam",
        Vastrapur,
        "Nava Vadaj",
        Ambavadi,
        "Elis Bridge",
        Ranip,
        Gota,

    );
};
Status = Success;
 }

现在我只需要在数组中存储 7 个区域名称我如何存储它? 我的代码在这里

      if ([[res valueForKey:@"Status"]isEqualToString:@"Success"]) {
         NSLog(@"%@",res);
         arrAreaname = [[res valueForKey:@"Result"] mutableCopy];

           arrarea=[[arrAreaname valueForKey:@"Area"]mutableCopy];
                 NSLog(@"arrarea: %@", arrarea);

          NSData *json = [NSJSONSerialization dataWithJSONObject:arrarea      
             options:NSJSONWritingPrettyPrinted error:nil];
        NSLog(@"JSON: %@", json);

            NSString *jsonString = [[NSString alloc] initWithData:json 
             encoding:NSUTF8StringEncoding];

       NSLog(@"JSON string: %@", jsonString);



   }else{
    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"ERROR"
        message:@"connection error"
            delegate:nil
            cancelButtonTitle:@"OK"
        otherButtonTitles:nil];

    [message show];
  }

我最后来到这里的 jasonstring 现在我如何将数据存储在数组中?

【问题讨论】:

  • 您可以在字典中添加数据,然后将该字典添加到数组中,例如 NSArray *Array = [[NSArray alloc] initWithArray:[dic objectForKey:@"Result"]];
  • 使用类似 NSArray 的数组 *Array = [[NSArray alloc] initWithArray:[dic objectForKey:@"Result"]valueforKey:@"Area"]
  • 你已经把你的购物车放在你的 JSON 马之前。如果上面的 NSLog 输出是res,那么它已经被 NSJSONSerialization 解析了,你不需要再做一次。你所谓的arrarea 是你的最终数组。

标签: ios iphone json nsarray


【解决方案1】:

我假设您的 arrAreanameNSArray。仔细查看您的数据:

Result =     {
    Area =         (

        "Shah-e-Alam",
        Vastrapur,
        "Nava Vadaj",
        Ambavadi,
        "Elis Bridge",
        Ranip,
        Gota,

    );
};

Result键的值为NSDictionary,Area键的值为NSArray

编辑:

你应该这样做:

arrarea= [NSArray arrayWithArray: res[@"Result"][@"Area"]];

【讨论】:

  • 这是 NSLog(@"%@",res); 的输出
【解决方案2】:

您正在将字典写入 json 数据,而不是阅读。

// Use following lines to read JSON response.

NSDictionary *dictResult = [NSJSONSerialization JSONObjectWithData:<json data> options:NSJSONReadingAllowFragments error:nil];
NSArray *areas = [NSArray arrayWithArray:dictResult[@"Result"][@"Area"]];
NSLog(@"Areas : %@ %@",dictResult[@"Result"][@"Area"],areas);

【讨论】:

  • JSON 字符串:[“Shah-e-Alam”,“Vastrapur”,“Nava Vadaj”,“Ambavadi”,“Elis Bridge”,“Ranip”,“Gota”,] 我需要相同结果为数组格式
  • @UjeshPatel 你试过给定sn-p吗?输入您的 JSON 响应数据,它会在日志中为您提供数组,您可以将其存储在任何您想要的位置。
  • @UjeshPatel 我已经修改了我的答案,现在它也将区域存储在数组和日志中。快乐编码:)
  • 结果本身就是数组老兄。数组的显示在这里会有所不同。您可以遍历数组中的所有区域。输出由操作系统以所需格式存储,您无法修改其表示。
  • 那么您可能会在解析之前填充数据选择器,否则您的数组将无法在那里访问。将您的数组作为类实例。
【解决方案3】:

这是对您有帮助的示例逻辑

NSArray *are=[[NSArray alloc] initWithObjects:@"Shah-e-Alam",
                  @"Vastrapur",
                  @"Nava Vadaj",
                  @"Ambavadi",
                  @"Elis Bridge",
                  @"Ranip",
                  @"Gota", nil];
    NSDictionary *dic2=[[NSDictionary alloc]initWithObjectsAndKeys:are,@"area", nil];
    NSMutableDictionary *dic1=[[NSMutableDictionary alloc]initWithObjectsAndKeys:dic2,@"Result", nil];
    NSLog(@"dic1=%@",dic1);

    NSArray *array=[[NSArray alloc]init];

    array= [NSArray arrayWithArray:[NSArray arrayWithArray:[[NSMutableDictionary dictionaryWithDictionary:[dic1 valueForKey:@"Result"]] valueForKey:@"area"]]];

     NSLog(@"array=%@",array);

【讨论】:

  • dic1={ 结果 = { area = { Area = ("Shah-e-Alam", Vastrapur, "Nava Vadaj", Ambavadi, "Elis Bridge", Ranip, Gota, ); }; };并且在它的停止数组参数不是 NSArray'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-11
相关资源
最近更新 更多