2017-01-04 7 views
2

こんにちは、私はiOS開発には初めてです。私は応答を得て、それらの値を変数に追加したいと思います。NSDictionaryから値を取得

私はそれを試しましたが、私は下に応答しています。私はこの応答にスラッシュがある理由を理解していません。

@"[{\"VisitorID\":\"2864983a-e26b-441a-aedf-84e2a1770b8e\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kanasalingam\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]},{\"VisitorID\":\"133bc108-b3bf-468a-9397-e1b0dba449db\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kumar\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]}]" 

私はこれを試してみました:

- (void) sendOtherActiveChats:(NSDictionary *) chatDetails{ 
    NSLog(@"inside sendOtherActiveChats"); 
    NSLog(@"otherDetails Dictionary : %@ ", chatDetails); 

    NSString *VisitorID = [chatDetails objectForKey:@"VisitorID"]; 
    NSString *ProfileID = [chatDetails objectForKey:@"ProfileID"]; 
    NSString *CompanyID = [chatDetails objectForKey:@"CompanyID"]; 
    NSString *VisitorName = [chatDetails objectForKey:@"VisitorName"]; 
    NSString *OperatorName = [chatDetails objectForKey:@"OperatorName"]; 
    NSString *isocode = [chatDetails objectForKey:@"isocode"]; 

    NSLog(@"------------------------Other Active Chats -----------------------------------"); 
    NSLog(@"VisitorID  : %@" , VisitorID); 
    NSLog(@"ProfileID  : %@" , ProfileID); 
    NSLog(@"CompanyID  : %@" , CompanyID); 
    NSLog(@"VisitorName : %@" , VisitorName); 
    NSLog(@"OperatorName : %@" , OperatorName); 
    NSLog(@"countryCode: %@" , isocode); 
    NSLog(@"------------------------------------------------------------------------------"); 

} 

いくつかのいずれかが、私は、この文字列から値を取得するために助けることができますか?

+0

は、理由のスラッシュがあります '" '、そしてあなたのオブジェクトは、JSONのNSStringの。 – Larme

答えて

5

あなたは対応して辞書の配列を取得しているが、あなたの回答は、あなたがNSDataにしてJSONObjectWithData:とのデータから配列を取得することをその使用後にあなたの応答文字列を変換し、そのため、この方法のようにNSJSONSerializationを使用してNSArrayに変換して文字列でありますそれ。

NSString *jsonString = @"[{\"VisitorID\":\"2864983a-e26b-441a-aedf-84e2a1770b8e\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kanasalingam\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]},{\"VisitorID\":\"133bc108-b3bf-468a-9397-e1b0dba449db\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kumar\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]}]"; 
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

NSError *e; 
NSMutableArray *jsonArray = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&e]; 

ここで、配列をループし、そこから各辞書にアクセスします。

for (NSDictionary *dic in jsonArray) { 
    NSLog(@"%@",[dic objectForKey:@"VisitorID"]); 
    ... and so on. 
} 
+0

作品であることをより多くのだ。ありがとう。あなたは正確に知っている限り –

+0

@SathyaBamanようこそメイト:) –

1

まず、文字列を解析する必要があります。

NSString *aString = @"[{\"VisitorID\":\"2864983a-e26b-441a-aedf-84e2a1770b8e\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kanasalingam\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]},{\"VisitorID\":\"133bc108-b3bf-468a-9397-e1b0dba449db\",\"ProfileID\":\"69c02265-abca-4716-8a2f-ac5d642f876a\",\"CompanyID\":null,\"VisitorName\":\"kumar\",\"OperatorName\":\"baman\",\"Image\":null,\"isocode\":\"lk\",\"CurrentOperator\":[\"69c02265-abca-4716-8a2f-ac5d642f876a\"]}]"; 

NSData *data = [aString dataUsingEncoding:NSUTF8StringEncoding]; 
id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 
NSLog(@"%@",[[json objectAtIndex:0] objectForKey:@"VisitorID"]); 
1

だから、JSON文字列と2つのオブジェクトのarrayを持っています。だから、これはArray

for (int i = 0; i < arrayResponse.count; i++) { 
    NSDictionary *dictionaryTemp = [arrayResponse objectAtIndex:i]; 
    NSLog(@"VisitorID : %@",[dictionaryTemp valueForKey:@"VisitorID"]); 
    NSLog(@"ProfileID : %@",[dictionaryTemp valueForKey:@"ProfileID"]); 
    NSLog(@"CompanyID : %@",[dictionaryTemp valueForKey:@"CompanyID"]); 
    NSLog(@"VisitorName : %@",[dictionaryTemp valueForKey:@"VisitorName"]); 
} 

は今、あなたは、いくつかのキーにNULL取得する良いチャンスがあるので今のループと、印刷データに使用

NSData *myJSONData = [YOUR_JSON_STRING dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error; 
NSMutableArray *arrayResponse = [NSJSONSerialization JSONObjectWithData:myJSONData options:NSJSONReadingMutableContainers error:&error]; 

JSON文字列を変換します次のコード

を書きますクラッシュする可能性があります。そのため、Null validationsを使用してクラッシュを回避してください。

+3

は' valueForKey'を使用しないでくださいKVCは何で、なぜこの方法が必要なのか。 – vadian

関連する問題