如何使用JSON框架解析iPhone SDK(XCode)中的JSON对象

如何使用JSON框架解析iPhone SDK(XCode)中的JSON对象,iphone,xcode,json,parsing,Iphone,Xcode,Json,Parsing,我有这样的JSON对象: { "data": {"array": ["2", {"array": [ {"clientId":"1","clientName":"Andy","job":"developer"}, {"clientId":"2","clientName":"Peter","job":"carpenter"} ] } ] }, "mes

我有这样的JSON对象:

{ "data":
  {"array":
    ["2",
       {"array":
          [
            {"clientId":"1","clientName":"Andy","job":"developer"},
            {"clientId":"2","clientName":"Peter","job":"carpenter"}
          ]
        }
     ]
   },
 "message":"MSG0001:Success",
 "status":"OK"
}

我想使用JSON框架获取数组[0]值(2)和数组[1]值(clientId、clientName、job)。你知道怎么做吗?

假设你在项目中遵循了JSON框架,下面是你如何使用它(摘自:


谢谢你的回答,我的问题解决了,我对你的代码做了一些修改,如下所示:

// Parse the string into JSON
NSDictionary *json = [myString JSONValue];

// Get all object
NSArray *items = [json valueForKeyPath:@"data.array"];
NSArray *array1 = [[items objectAtIndex:1] objectForKey:@"array"];
NSEnumerator *enumerator = [array1 objectEnumerator];
NSDictionary* item;
while (item = (NSDictionary*)[enumerator nextObject]) {
   NSLog(@"clientId = %@",  [item objectForKey:@"clientId"]);
   NSLog(@"clientName = %@",[item objectForKey:@"clientName"]);
   NSLog(@"job = %@",       [item objectForKey:@"job"]);
}

如何在NSMUtableArray中存储此数据

while (item = (NSDictionary*)[enumerator nextObject]) {
   NSLog(@"clientId = %@",  [item objectForKey:@"clientId"]);//this 
   NSLog(@"clientName = %@",[item objectForKey:@"clientName"]);//this
   NSLog(@"job = %@",       [item objectForKey:@"job"]);//this
}

我们需要一个类,比如MyData.h和MyData.m

//MyData.h
@interface MyData : NSObject {
    NSString *clientId;
    NSString *clientName;
    NSString *job;
}

@property (nonatomic, retain) NSString *clientId;
@property (nonatomic, retain) NSString *clientName;
@property (nonatomic, retain) NSString *job;

@end

//MyData.m
@implementation MyData

@synthesize clientId, clientName, job;

- (void)dealloc{    
    [clientId release];
    [clientName release];
    [job release];
    [super dealloc];
}

@end
//-------------------------------------
要存储我们的数据:

NSMutableArray *dataArray = [[NSMutableArray alloc]init];
while (item = (NSDictionary*)[enumerator nextObject]) {
    MyData *aMyData = [[MyData alloc] init];
    aMyData.clientId   = [item objectForKey:@"clientId"];
    aMyData.clientName = [item objectForKey:@"clientName"];
    aMyData.job        = [item objectForKey:@"job"];
    [dataArray addObject:aMyData];
    [aMyData release];
    aMyData = nil;
}
试试这个

while (item = (NSDictionary*)[enumerator nextObject]) {
NSMutableArray *myArray = [[NSMutableArray alloc] init];
[myArray AddObject:((NSDictionary*)[enumerator nextObject])];
}

可以创建数据点的层次结构。例如,如果要获取JSON对象的内部数组,可以使用以下方法访问它:

NSArrray *objectArray = jsonObject[@"array"][@"2"][@"array"];
或者,你也可以做类似的事情。例如,在YelpAPI中,提供了一个企业的JSON。将这些业务放在一个数组中,您可以通过以下操作访问对象的不同元素:

NSString *businessLocation = [businessArray objectAtIndex: indexOfBusinessInArray][@"location"][@"display_address"];

很抱歉,我可能听起来很粗鲁,但google for
iphone parse json
,第一次点击。这是一个很好的教程。它不应该是[[items objectAtIndex:1]objectForKey:@“clientId]”);我有一个json格式的时间API如何使用,请帮助我。jsont({“id”:“ntp-a1.nict.go.jp”,“it”:1232963971.248,“st”:1344228610.961,“leap”:34,“next”:1341100800,“step”:1})
NSString *businessLocation = [businessArray objectAtIndex: indexOfBusinessInArray][@"location"][@"display_address"];