簡體   English   中英

如何解析 JSON 響應

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM