2012-07-30 25 views
0

所以我试图解析此JSON数据:解析嵌套的JSON和再插入的UITableView

 { 
    deal = Test; 
    expires = "2012-07-29 22:50:30"; 
    "is_active" = 1; 
    "id" = 27; 
    users =   (
        { 
      distance = 0; 
      latitude = "41.312618"; 
      longitude = "-74.195114"; 
      "user_id" = 34; 
     }, 
        { 
      distance = 0; 
      latitude = "41.312618"; 
      longitude = "-74.195114"; 
      "user_id" = 35; 
     }, 
        { 
      distance = 0; 
      latitude = "41.312618"; 
      longitude = "-74.195114"; 
      "user_id" = 36; 
     }, 
        { 
      distance = 0; 
      latitude = "41.312618"; 
      longitude = "-74.195114"; 
      "user_id" = 38; 
     } 
    ); 
}, 
    { 
    deal = Testing; 
    expires = "2012-07-29 23:37:38"; 
    "is_active" = 0; 
    "id" = 26; 
    users =   (
        { 
      distance = 0; 
      latitude = "41.312618"; 
      longitude = "-74.195114"; 
      "user_id" = 37; 
     } 
    ); 
} 

所以我想每个部分的标题是交易,然后行是相关的每一个用户的与那笔交易。因此,对于第一笔交易“测试”,将有四行用户34,35,36和38.然后对于第二笔交易“测试”,只有一个用户,因此只有一行。这需要能够为无限数量的交易工作。我可以将所有交易解析为一个数组,但我无法弄清楚如何区分用户。请帮忙!

编辑:

这是我如何获得JSON数据并将其存储和交易。

NSURL *loginURL = [NSURL URLWithString: [NSString stringWithFormat: URL]; 

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:loginURL]; 
[theRequest setHTTPMethod:@"POST"]; 

NSError *error; 
NSURLResponse *response; 

NSData * responseData=[NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error]; 

NSDictionary * luckyNumbers = [NSJSONSerialization JSONObjectWithData:responseData //1               
                   options:NSJSONReadingAllowFragments 
                   error:&error]; 
NSLog(@" %@", luckyNumbers); 

NSArray * array1 = [luckyNumbers objectForKey:@"active"]; //THIS IS THE JSON THAT IS DISPLAYED ABOVE 

deals = [[NSMutableArray alloc] init]; 

active = [[NSMutableArray alloc] init]; 

for (NSDictionary *item in array1) 
{ 
    [deals addObject:item]; // THIS WORKS FINE. IT RETURNS ALL OF THE DEALS IN AN ARRAY WHICH I SET TO THE NUMBER OF SECTIONS IN TABLE AND THE HEADER TITLE OF THE SECTION 
    [active addObject:[item objectForKey:@"users"]];//THIS IS THE PROBLEM. 
} 

编辑2:

所以这仍然是给我的问题。我能够很好地解析这些交易并将它们显示为每个部分的标题。当我将用户分析到一个名为active的数组中时它是一个数组,如下所示。前四个是交易“测试”的一部分,最后一个是交易“测试”的一部分。我不知道如何将前四个用户设置为0节,并在该节中使用正确的行数并在tableview中正确显示它们。然后在接下来的部分重复这一点。这需要与Y个用户进行X次交易。我希望这是有道理的,请帮助!

(
       { 
     distance = 0; 
     latitude = "41.312618"; 
     longitude = "-74.195114"; 
     "user_id" = 34; 
    }, 
       { 
     distance = 0; 
     latitude = "41.312618"; 
     longitude = "-74.195114"; 
     "user_id" = 35; 
    }, 
       { 
     distance = 0; 
     latitude = "41.312618"; 
     longitude = "-74.195114"; 
     "user_id" = 36; 
    }, 
       { 
     distance = 0; 
     latitude = "41.312618"; 
     longitude = "-74.195114"; 
     "user_id" = 38; 
    } 
), 
(
       { 
     distance = 0; 
     latitude = "41.312618"; 
     longitude = "-74.195114"; 
     "user_id" = 37; 
    } 
); 
+0

请问用户i.d.总是相同还是不同?你在什么基础上分类? – 2012-07-30 05:01:14

+0

用户标识可以不同。不需要为用户提供任何特定的订单,他们只需要在表格的正确部分。 – Sean 2012-07-30 11:11:40

+0

你知道DealHand的价值吗?如果是的话,这可以非常容易.. :) – 2012-07-30 11:44:52

回答

0
var yourDataHolder = JSON.parse(yourJSONObject); 
for(var x in yourDataHolder) 
{ 
if(yourDataHolder[x].hasOwnProperty) 
{ 
/** 
* DO STUFF HERE 
*/ 
console.log(yourDataHolder[x].deal); 
console.log(yourDataHolder[x].expires); 
} 
} 

为了让您更容易明白这里是发生了什么: yourDataHolder [X]将遍历在您的JSON对象的不同项目。 要访问您的对象的属性,使用yourDataHolder[x].deal,yourDataHolder[x].expires,yourDataHolder[x].is_active,yourDataHolder[x].id

要访问用户表内的数据,这样做: VAR yourDataHolder = JSON.parse(yourJSONObject);

for(var x in yourDataHolder) 
{ 
if(yourDataHolder[x].hasOwnProperty) 
{ 
/** 
* DO STUFF HERE 
*/ 
for(var y in yourDataHolder[x].users) 
{ 
    if(yourDataHolder[x].users[y].hasOwnProperty) 
     { 
      /** 
      * You are now inside the current "users" object 
      */ 
      console.log(yourDataHolder[x].users[y]); 
     } 
} 
} 
} 
+0

以上是一个JavaScript实现。使用任何你想要的语言,这个想法是一样的。我是一个JS人,所以我通常试图用JS完成工作。 – 2012-07-30 01:41:24

+0

hasOwnProperty是什么? – Sean 2012-07-30 01:55:24

+1

我强烈建议检出'SBJSON'。 – 2012-07-30 06:47:55