2012-01-04 66 views
0

如果您有一個包含JSON數據的NSString,並且您需要檢索給定KEY的VALUE值,但是您需要讀取該鍵的RAW JSON字符串,那麼您將如何執行該操作?在JSON中爲'Key'檢索'Value',但保留原始字符串?

假設VALUE有多個字典和數組,並且您只需要原始字符串來計算簽名。

有沒有什麼可以做到這一點? JSONKit不提供此功能。我想避免爲此功能編寫自定義分析器。

回答

1

其實JSONKIT非常適合您的需求。 首先,你應該將你的字符串轉換爲NSData來使用JSONKit來解析它,然後你可以找到你想要的鍵值,最後JSONKit可以將它轉換回NSString。

有些代碼會在這裏顯示更多的細節,希望能幫助:

NSString *jsonString = @"{\"k\":{\"age\":1,\"desc\":\"something cool\"}}"; 
NSData *rawData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 

id jsonObject = [rawData objectFromJSONData]; 
NSLog(@"json object is:%@", jsonObject); 

id kObject = [jsonObject valueForKey:@"k"]; 
NSLog(@"the object of key k is: %@", kObject); 

NSString *kString = [kObject JSONString]; 
NSLog(@"raw string of k is: %@", kString); 

和輸出將看起來像:

2012-01-04 12:50:41.234 App[1966:207] json object is:{ 
    k =  { 
     age = 1; 
     desc = "something cool"; 
    }; 
} 
2012-01-04 12:50:41.235 App[1966:207] the object of key k is: { 
    age = 1; 
    desc = "something cool"; 
} 
2012-01-04 12:50:41.235 App[1966:207] raw string of k is: {"age":1,"desc":"something cool"} 
+0

Thinkg是...因爲我需要生成的簽名後端響應,JSONKit輸出與後端響應之間的最小差異將導致哈希不匹配。 這就是爲什麼我想知道是否有更優雅的解決方案,而不是找到一個子字符串,並計算括號! 感謝您的回覆! – 2012-01-04 11:57:28

相關問題