iOSは初めてです。ログインページを作成しましたが、すべて正常に機能します。ユーザー名とパスワードを確認するために[〜#〜] json [〜#〜]を使用し、サーバーからdictionary形式で応答を得ました。 dictionaryから値を抽出して、プログラムでチェックしたい。サーバーから受け取る応答は次のとおりです。
json: {
error = 0;
msg = "";
value = {
user = false;
};
};
まず、キーerror
の値が0
または1
。次に、キーuser
で値を確認します。それをチェックするためにどのようにコーディングすればよいかわかりません。誰か助けてもらえますか?
私が試したコードは以下です:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *respString = [[NSString alloc] initWithData:loginJSONData encoding:NSUTF8StringEncoding];
SBJsonParser *objSBJSONParser = [[SBJsonParser alloc] init];
NSDictionary *json = [[NSDictionary alloc] initWithDictionary:[objSBJsonParser objectWithString:respString]];
NSLog(@"json: %@",json);
NSString *error = [json objectForKey:@"error"];
NSLog(@"error: %@", error);
if ([error isEqualToString:@"o"])
{
NSLog(@"login successful");
}
else
{
NSLog(@"login fail");
}
}
最新のObjective-Cを使用すると、配列や辞書にあるものへのアクセスが簡単になります。
次の構文を使用する必要があります。
id<NSObject> value = dictionary[@"key"];
同様に、
id<NSObject> value = array[1]; // 1 is the index
上記を質問に適用する:
NSString *error = json[@"error"];
NSDictionary *value = json[@"value"];
BOOL user = [json[@"value"][@"user"] boolValue];
上記の行のように、ネストは許可されていますが、それは良い方法ではありません。
NSNumber *error = [json objectForKey:@"error"];
if ([error intValue] == 0)
{
NSLog(@"login successful");
NSDictionary *value = [json objectForKey:@"value"];
NSNumber *user = [value objectForKey:@"user"];
if ([user boolValue])
{
NSLog(@"user == true");
}
else
{
NSLog(@"user == false");
}
}
else
{
NSLog(@"login failed");
}
通常サーバーから返される辞書は、キーと値のペアになります。キーに対応するこれらの値にアクセスするために探しているなら、これらのコードはあなたを助けるかもしれません
NSString *varname = [[NSString alloc]initWithFormat:@"%@",[dictionaryname objectForKey:@"key"]];
JSON
辞書からget error値を取得します。
NSString *error = [myJSONDicName objectForKey:@"error"];
JSON
辞書からget ser値を取得します。
NSString *error = [[myJSONDicName objectForKey:@"value"] objectForKey:@"user"];
編集:
あなただけを変える必要があります
if ([error isEqualToString:@"o"])
_^_
|
変化する 'o'
から'0'
以下のコードを使用できます
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSString *respstring = [[NSString alloc]initWithData:loginJsonData encoding:NSUTF8StringEncoding];
NSDictionary *dic = [responseString JSONValue];
NSLog(@"%@",dic);
NSNumber *error = [dic objectForKey:@"error"];
if([error intValue] == 0) {
NSLog(@"login successful");
}
else
{
NSLog(@"login fail");
}
NSString *user = [value objectForKey:@"user"];
BOOL userStatus = [user boolValue];
}