如何从JSON响应中获取数组对象值?

时间:2016-05-24 11:22:13

标签: objective-c json

  

我有这种格式的json响应请看这个。我想得到每个地址的lat和long值。

{
    "message":"success",
    "data":
    {
        "docs":
        [
            {
                "_id":"573d8eca67c7f172cc88387e",
                "user":
                {
                    "phone":"8510932519)/+",
                    "image":"",
                    "name":"Niraj@%"
                },
                "distance":18825,
                "bookingNumber":"42aopy2dyry8",
                "bookingType":0,
                "paymentMode":"Card",
                "tip":0,
                "estimatedFare":51.1,
                "estimatedDuration":"2364",
                "created":"2016-05-18T14:49:31.231Z",
                "stop2":
                {
                    "address":"Malviya Nagar, New Delhi, Delhi 110017, India",
                    "location":[28.533519700000003,77.21088569999999]
                },
                "stop1":
                {
                    "address":"Ansari Nagar East, New Delhi, Delhi 110029, India",
                    "location":
                    [
                        28.566540099999997,
                        77.2098409
                    ]
                },
                "destination":
                {
                    "address":"Saket, New Delhi, Delhi 110017, India",
                    "location":
                    [
                        28.524578699999996,
                        77.206615
                    ]
                },
                "currentLocation":
                {
                    "address":"26, Ashok MargJ Block, Pocket J, Sector 18",
                    "location":
                    [
                        28.568437,
                        77.32404
                    ]
                }
            }
        ],
        "total":1,
        "limit":8,
        "page":":1",
        "pages":1 
    }
}
  

我需要为每个地址获取lat和long。我正在使用此代码获取地址,但是如何在位置数组中获得0和1索引的lat和long?

  dictionary = [[NSJSONSerialization JSONObjectWithData:data options:0 error:nil]objectForKey:@"data"];


  NSArray *IDArray = [dictionary objectForKey:@"docs"];
  for (NSDictionary *Dict in IDArray)
  {

      NSMutableDictionary *temp = [NSMutableDictionary new];
      [temp setObject:[Dict objectForKey:@"_id"] forKey:@"_id"];

      NSString *booknumber = [Dict objectForKey:@"bookingNumber"];
      if([booknumber length] != 0)
          [temp setObject:booknumber forKey:@"bookingNumber"];

      NSMutableDictionary *stp1 = [Dict objectForKey:@"stop1"];

      if ([[stp1 allKeys] containsObject:@"address"]) {

          [temp setObject:[stp1 objectForKey:@"address"] forKey:@"address"];
      }

      NSMutableDictionary *stp2 = [Dict objectForKey:@"stop2"];

      if ([[stp2 allKeys] containsObject:@"address"]) {

          [temp setObject:[stp2 objectForKey:@"address"] forKey:@"address1"];
      }



      NSMutableDictionary *currentloc = [Dict objectForKey:@"currentLocation"];

      if ([[currentloc allKeys] containsObject:@"address"]) {

          [temp setObject:[currentloc objectForKey:@"address"] forKey:@"address1"];

      }

1 个答案:

答案 0 :(得分:1)

试试这个

NSMutableDictionary *stp1 = [Dict objectForKey:@"stop1"];

  if ([[stp1 allKeys] containsObject:@"address"]) {

      [temp setObject:[stp1 objectForKey:@"address"] forKey:@"address"];

      // take one Temp array for fetch lat and long

     NSArray *tempstp1 =  [stp1 objectForKey:@"location"];
       [temp setObject:[tempstp1 objectAtIndex:0] forKey:@"latitude"];
       [temp setObject:[tempstp1 objectAtIndex:1] forKey:@"longitude"];
  }

  NSMutableDictionary *stp2 = [Dict objectForKey:@"stop2"];

  if ([[stp2 allKeys] containsObject:@"address"]) {

      [temp setObject:[stp2 objectForKey:@"address"] forKey:@"address"];

        // take one Temp array for fetch lat and long

     NSArray *tempstp2 =  [stp2 objectForKey:@"location"];
       [temp setObject:[tempstp2 objectAtIndex:0] forKey:@"latitude"];
       [temp setObject:[tempstp2 objectAtIndex:1] forKey:@"longitude"];
  }