2012-12-20 146 views
1

我想用JSON格式的PHP打印MySQL结果集,并用iOS读取它。通过JSON NSDictionary循环

这是我JSON字符串

[{"partnerid":"1","code":"SUMU6003","partnerName":"Company name","street":"Some Street 5323","zipCode":"8732","city":"Berlin","languages":"English","workers":"Name 1, Name 2","lineup":"Kids"},{"partnerid":"2","code":"DEMO8884","partnerName":"Partner 2","street":"Third street 2","zipCode":"383838","city":"Berlin","languages":"Greek","workers":"Petra","lineup":"Kids"}] 

在这种方法我得到NSDictionary

#pragma mark - ServiceConnectorDelegate - 

-(void)requestReturnedData:(NSData *)data { 
    NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:data]; 
    # process dictionary and grep strings from json-string 
    # ... 
} 

能否请你告诉我如何访问不同的结果集一个循环?我想单独访问每个密钥。

我知道NSDictionary包含数据,因为NSLog(@"%@",dictionary);打印:

2012-12-20 19:13:20.661 myapp[576:907] (
     { 
     city = Berlin; 
     code = SUMU6003; 
     languages = English; 
     lineup = Kids; 
     partnerName = "Company name"; 
     partnerid = 1; 
     street = "Some Street 5323"; 
     workers = "Name 1, Name 2"; 
     zipCode = 8732; 
    }, 
     { 
     city = Berlin; 
     code = DEMO8884; 
     languages = Greek; 
     lineup = Kids; 
     partnerName = "Partner 2"; 
     partnerid = 2; 
     street = "Third street 2"; 
     workers = Petra; 
     zipCode = 383838; 
    } 
) 

非常感谢您的帮助。

+0

这不是一个“JSON字典”。这是一个包含多个JSON对象的JSON数组。 JSON数组== NSArray。 JSON对象== NSDictionary。当你NSLog的“词典”它打印出一个NSArray的NSDictionaries。 –

回答

2

有时候内省在这里很有用。例如NSLog(@“dictionary is type:%@”,[dictionary class]);

我说这是基于你的输出的原因看起来,字典实际上是一个包含两个NSDictionaries的数组。如果是这种情况,你会想要做这样的事情:

for (NSDictionary *actualDictionary in dictionary<this is really an array>) 
{ 
    NSString *myStringValue = [actualDictionary objectForKey:@"city"]; 
    // etc... 
} 

你必须找出什么样的数据类型,你实际上首先处理虽然。

+0

它返回:字典是类型:__NSCFArray – doonot

+0

这正是人们所期望的。 –

+0

是的,这意味着我在上面为你制定的循环应该做到这一点。 – HackyStack

0

这样做:

#import <objc/runtime.h>

NSLog(@"The class name is %s", object_getClassName(dictionary);

0

你必须是包含阵列字典的,所以你可以快速枚举字典运行字典值和投每一个如字典的应答词典并得到如下值:

-(void)requestReturnedData:(NSData *)data { 
    NSDictionary *dictionary = [NSDictionary dictionaryWithJSONData:data]; 
    # process dictionary and grep strings from json-string 
    for(id item in dictionary) 
    { 
     NSDictionary *dic = (NSDictionary *)item; 
     NSLog(@"%@",[dic objectForKey:@"city"]); 
     NSLog(@"%@",[dic objectForKey:@"code"]); 
     ...... 
    } 
}