2011-08-10 13 views
0

JSON結果を返すWebサービス(.NET)があります。 iOSアプリケーションはそのWebサービスを消費し、応答を取得します。すべてが機能しますが、応答を受け取ったときにはオブジェクトdの内部にあります。ここでの応答は次のとおりです。今iOSアプリが消費するキーの値を取得JSON

{"d":"{\"Name\":\"azamsharp\"}"} 

、あなたは私が「azamsharp」であるプロパティ「名前」の値にアクセスする必要が想像できるよう。

NSLog(@"%@",[responseDict valueForKeyPath:@"d.Name"]); 

しかし、これは私に次のエラー与えた:私は、次のアプローチを提案した別のポストに続くこの問題に関するすべてのヘルプははるかに高く評価されて

reason: '[<NSCFString 0x4cd6270> valueForUndefinedKey:]: this class is not key value coding-compliant for the key Name.' 

を!

答えて

3

JSONオブジェクトには「名前」というプロパティはありません。 JSONオブジェクトには、値が文字列である別のJSONオブジェクトの文字列表現である単一のキー "d"があります。あなたはこのような何かをしなければならないでしょう

NSString *innerString = [responseDict valueForKey:@"d"]; 
NSDictionary *innerObject = [innerString parseJSON]; // Or however you parse a JSON string 
NSString *name = [innerObject valueForKey:@"Name"]; 
+0

ありがとうございました!それが問題を解決しました! – azamsharp

+0

ちょうどもう1つの情報:この "d"は.NET JSONクラスのネイティブです。それはあなたがjavascriptから構文解析する必要があるときに何らかの種類の注入を防ぐために.NETの文字「d」を使用するからです(どのような種類の注入について聞かないでください)。だから、あなたは常に2回解析する必要があります。 –

2

別のaproachは、次のようになります。

NSString *innerString = [[responseDict valueForKey:@"d"] [email protected]"Name"]; 

あなたは、単一の行が必要になります。

関連する問題