2011-08-10 39 views
0

我有一個返回JSON結果的web服務(.NET)。 iOS應用程序使用該Web服務並獲得響應。一切正常,但當我得到響應時,它在對象d內。這裏是迴應:獲取消費JSON的iOS應用程序密鑰的價值

{"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對象中沒有屬性「name」。你的JSON對象有一個鍵「d」,它的值是一個字符串,恰好是另一個JSON對象的字符串表示。

你將不得不做這樣的事情:

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

謝謝你!解決了這個問題! – azamsharp

+0

只是一個更多的信息:這個「d」本身就是.NET JSON類。這是因爲.NET使用字母「d」來防止某種注入,當你需要從javascript解析它時(不要問我注入了什麼類型)。所以,是的,你將永遠需要解析兩次。 –

2

另一種形式給出是:

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

你只需要一條線。

相關問題