[英]How to parse a JSON response
這是我的 json 響應:
{
"wk_time":{
"user":{
"id":11,
"name":"geetha adhi"
},
"startday":"2015-08-09",
"status":"New",
"total":38.23,
"time_entries":[
{
"id":246,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":8,
"name":"Design"
},
"hours":7.0,
"comments":"test",
"spent_on":"2015-08-09",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
},
{
"id":287,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":8,
"name":"Design"
},
"hours":5.0,
"comments":"test",
"spent_on":"2015-08-10",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
},
{
"id":288,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":8,
"name":"Design"
},
"hours":5.0,
"comments":"test",
"spent_on":"2015-08-11",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
},
{
"id":289,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":8,
"name":"Design"
},
"hours":5.0,
"comments":"test",
"spent_on":"2015-08-12",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
},
{
"id":291,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":8,
"name":"Design"
},
"hours":5.0,
"comments":"test",
"spent_on":"2015-08-14",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
},
{
"id":292,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":8,
"name":"Design"
},
"hours":5.0,
"comments":"test",
"spent_on":"2015-08-15",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
},
{
"id":492,
"project":{
"id":4,
"name":"Vitals"
},
"issue":{
"id":22
},
"user":{
"id":11,
"name":"geetha adhi"
},
"activity":{
"id":9,
"name":"Development"
},
"hours":6.23,
"comments":"ttest",
"spent_on":"2015-08-09",
"custom_fields":[
{
"id":9,
"name":"Test"
},
{
"id":10,
"name":"test2"
}
]
}
]
}
}
我的一段代碼:
NSURLRequest * urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:response url]];
NSError * error = nil;
NSURLResponse * response = nil;
NSData * jsonSource = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];
NSLog(@" %@",jsonSource);
id jsonObjects = [NSJSONSerialization JSONObjectWithData: jsonSource options:NSJSONReadingMutableContainers error:nil];
if ([jsonObjects objectForKey:@"wk_time"] != [NSNull null]) {
NSArray *itemArray = [jsonObjects objectForKey:@"wk_time"];
NSLog(@" %@",itemArray);
}
到目前為止,我已經做了很多。 我希望獲得項目名稱、活動名稱。 如何得到這個?
NSDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];
NSDictionary *dictUser = [[jsonDict objectForKey:@"wk_time"]objectForKey:@"user"];
NSArray *array = [[jsonDict objectForKey:@"wk_time"]objectAtIndex:0];
for(int i=0;i<[array count];i++)
{
NSDictionary *dictTimeEntries = [[array objectAtIndex:i]objectForKey:@"time_entries"];
NSDictionary *dictProject = [dictTimeEntries objectForKey:@"project"];
NSString *stringProjectName = [NSString stringWithFormat:@"%@",[dictProject valueForKey@"name"]];
NSLog(@"The stringProjectName is - %@",stringProjectName);
NSString *stingProjectID = [NSString stringWithFormat:@"%@",[dictProject valueForKey@"id"]];
NSLog(@"The stringProjectID is - %@",stingProjectID);
NSDictionary *dictActivity = [dictTimeEntries objectForKey:@"activity"];
NSString *stringActivityName = [NSString stringWithFormat:@"%@",[dictActivity valueForKey@"name"]];
NSLog(@"The stringActivityName is - %@",stringActivityName);
NSString *stingActivityID = [NSString stringWithFormat:@"%@",[dictActivity valueForKey@"id"]];
NSLog(@"The stingActivityID is - %@",stingActivityID);
}
我強烈建議您將 JSON 結果轉換為對象。 一個非常有用且易於啟動的庫 - https://github.com/icanzilb/JSONModel
通過這種方式,您可以創建一個表示響應的類並輕松訪問所有屬性,例如普通的user.name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.