0

私は SBJSON を使用して応答を解析していますが、どういうわけかバスでデータを取得できません。この応答をどのように解析すればよいですか?

{"StatusCode":0,"Message":"email already exists","Content":{"HasApplication":false,"IsFaceBook":false,"UserActive":false,"UserAuthenticationType":0,"UserCredits":0,"UserDayAdded":0,"UserEmail":null,"UserEmailWasVerified":false,"UserGuid":null,"UserID":0,"UserSellerApproved":false,"UserTokef":0},"TotalCount":0}

私はこのように始めます:

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{
    [responseData setLength:0];
    NSLog(@"%@",response); 
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{
    [responseData appendData:data];
    NSLog(@"Data recived");     
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
    NSLog(@"Connection failed! Error - %@ %@",[error localizedDescription],
          [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]);
    responseData = nil;

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{
    NSLog(@"conenction loading finished"); 

    NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
    SBJsonParser *parser = [[SBJsonParser alloc] init];
    NSMutableDictionary *jsonDictionary = [parser objectWithString:responseString error:nil];
}

しかし、次は何ですか?私は StatusCode 値と UserID が必要です。

4

3 に答える 3

0

うーん..... NSMutableDictionary *jsonDictionary = [parser objectWithString:responseString 多分それはNSMutableDictionaryではなく、NSDictionaryです。その後:

NSString *statusCode = [jsonDictionary valueForKey:@"StatusCode"];
NSDictionary *contentDict = [jsonDictionary objectForKey@"Content"];
NSString *userID = [contentDict valueForKey@"UserID"];
于 2012-05-07T00:18:00.113 に答える
0

辞書があれば、それを使用できます。たとえば、次のようになります。

NSMutableDictionary *jsonDictionary = [parser objectWithString:responseString error:nil];
NSNumber * statusCode = [jsonDictionary objectForKey:@"StatusCode"];
NSString * message = [jsonDictionary objectForKey:@"Message"];
NSDictionary * content = [jsonDictionary objectForKey:@"Content"];
// etc...
于 2012-05-07T00:00:57.543 に答える
0

JSON 文字列の外観から、3 つのキーと値のペアを持つディクショナリがあり、そのうちの 1 つは複数のキーと値のペアを持つ別のディクショナリです。JSON responseString を NSMutableDictionary に割り当てたら、これに対処するには:

次のようになります。

NSNumber *statusCode = [jsonDictionary objectForKey:@"StatusCode"];
NSDictionary *contentDict = [jsonDictionary objectForKey@"Content"];
NSString *userID = [contentDict valueForKey@"UserID"];

まったく別の話ですが、Web サービスとのやり取りを頻繁に行う場合は、AFNetworking を真剣に検討することをお勧めします。それはあなたの人生を変えるでしょう:)

また、jsonDictionary を NSMutableDictionary にする必要がある理由がわかりません。後で変更しない限り、NSDictionary を使用すると、オーバーヘッドが少なくなります。

于 2012-05-07T00:01:59.197 に答える