objective-c - 从 json 数据填充类

标签 objective-c arrays json class sendasynchronousrequest

我有一个 WCF,它返回一些以下格式的 json 数据:

{
"RetrieveLocationsResult": [
   {
        "Address": "106 Mullaghboy Road",
        "Category": "Tarmac",
        "Closest_Property_Number": 106,
        "ID": 33,
        "Image1": 1234,
        "Image2": 0,
        "Image3": 0,
        "Latitude": 5,
        "Longitude": "-1.541902",
        "Notes": "New Driveway",
        "User_ID": 1
    },
    {
        "Address": "3 drumard road",
        "Category": "Tarmac",
        "Closest_Property_Number": 3,
        "ID": 40,
        "Image1": 23421,
        "Image2": 0,
        "Image3": 0,
        "Latitude": 4,
        "Longitude": "-2.541902",
        "Notes": "new gates",
        "User_ID": 1
    },
]
}

可以在此处查看完整内容 http://crm.fpmccann.co.uk/TemperatureWebService/iphonewebservice.svc/retrievelocations

我有一个名为 location 的类,其中包含每个变量。我想要做的是将这个 json 数据解析到每个位置,有点像创建一个位置数组,这些位置将使用经度和纬度放置在 map 上。

到目前为止我解析数据的方法是:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

     NSString *urlAsString = @"http://crm.fpmccann.co.uk/TemperatureWebService/iphonewebservice.svc/retrievelocations";
     NSURL *url = [NSURL URLWithString:urlAsString];
     NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];

     [NSURLConnection
      sendAsynchronousRequest:urlRequest
      queue:[[NSOperationQueue alloc] init]
      completionHandler:^(NSURLResponse *response,
                          NSData *data,
                          NSError *error)

      {
          NSLog(@"error: %@", error);
          NSLog(@"data: %@", data);
          NSLog(@"response: %@", response);

          if ([data length] >0 && error == nil)
          {
              NSArray *array = [NSJSONSerialization JSONObjectWithData:data
                                                               options:0
                                                                 error:&error];
              NSLog(@"Response: %@", array);

              CLLocationCoordinate2D location;                         // coordinates of the annotation
              NSMutableArray *newAnnotations = [NSMutableArray array]; // an array in which we'll save our annotations temporarily
              MKPointAnnotation *newAnnotation;                        // the pointer to the annotation we're adding

              NSMutableArray *location = [array valueForKey:@"RetrieveLocationsResult"];


              NSMutableArray *longitude = [[array valueForKey:@"RetrieveLocationsResult"] valueForKey:@"Longitude"];


             // NSLog(@"Response", response, data);
          }
          else if ([data length] == 0 && error == nil)
          {
              NSLog(@"Nothing was downloaded.");
          }
          else if (error != nil){
              NSLog(@"Error = %@", error);
          }

      }];


}

请原谅,这是在 View 中加载的,一旦运行就会更改。 它正在创建一个名为 location 的数组,里面有 4 个对象,但里面什么也没有。我想要做的是创建一个 for 循环并根据结果填充一个类?

最佳答案

为检索结果创建 JSON 字典:

NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSMutableArray *retrieveLocationsResultArr = [NSMutableArray arrayWithArray:[jsonDict objectForKey:@"RetrieveLocationsResult"]];

[retrieveLocationsResultArr enumerateObjectsUsingBlock:^(NSDictionary *locationDict, NSUInteger idx, BOOL *stop) {
    //Create your Location Objects
    NSString *addressStr = [locationDict valueForKey:@"Address"];//sample, extract all values you want in your custom objects.
}];

关于objective-c - 从 json 数据填充类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19954306/

相关文章:

javascript数组输入用户和平均值计算

objective-c - 如何在两个串联的 NSString 之间添加一个空格?

ios - 将 UICollectionView 添加到导航栏

ios - 抽象方法在Objective-C中实现多态

Objective-C:子父类型循环引用,泄漏?

python - 尝试将网页中的JS数据输出到.html输出文件中

javascript - 在对象结构中从其子级获取父级

ios - Firebase 填充数组两次 -- Swift

ruby-on-rails - 为什么Ruby 1.9.2带有JSON gem依赖关系而爆炸?

python - TypeError : jsonify() argument after ** must be a mapping, 未列出使用 Flask 返回的 JSON