2012-01-02 27 views
1

我正在使用SBJSON將我的NSDictionary轉換爲iOS應用程序中的JSON字符串。使用SBJSON的NSData或NSAttributedString

當我的字典包含NSAttributedString或NSData時,SBJSON無法生成字符串表示。

櫃面NSAttributedString的,錯誤的是:

-JSONRepresentation失敗。錯誤跟蹤是:( 「錯誤域= org.brautaset.JSON.ErrorDomain代碼= 1 \」 不支持NSConcreteMutableAttributedString \

JSON序列櫃面的NSData的,誤差爲:

- JSONRepresentation失敗錯誤跟蹤:(不支持NSConcreteMutableData \ 「錯誤域= org.brautaset.JSON.ErrorDomain代碼= 1 \」 JSON序列化 「 的UserInfo = {0x7ed2560 = NSLocalizedDescription JSON序列化不 支持NSConcreteMutableData}」

解決2個問題中的至少一個將是一個很大的問題。 請幫忙。

感謝 Roshit

+0

你的NSData或NSAttributedString對象包含什麼?它是否可串行化爲一個字符串? – 2012-01-02 18:19:40

+0

NSAttributedString是高度格式化的字符串。和in一樣,文本在不同的索引處使用不同的屬性進行格式化。 NSData是NSAttributedString的數據表示。數據表示是通過使用與[鏈接](https://devforums.apple.com/message/340283#340283) – Roshit 2012-01-02 20:21:01

+0

中類似的代碼獲得的。請接受其中一個答案;他們似乎很合理。或者提供更多信息,以便我們進一步幫助您。 – 2012-09-03 16:36:17

回答

2

JSON不具有任何數據類型,做你想做的,但你可以NSData的轉換爲Base64編碼的字符串。這可以通過實現-proxyForJson方法的NSData上的類別自動完成。問題是當你需要將它轉換回另一端的NSData時。如果密鑰是已知的,那麼您可以Base64解碼該密鑰。但是,如果數據部分可以用於任何密鑰,則會更困難。你必須以某種方式構造你的數據,這樣你才能確定哪些字符串應該被Base64解碼。

+0

U保存了一天.. Base64是關鍵..謝謝你...... :) – Roshit 2012-09-03 22:07:55

1

您無法傳遞NSData對象。解決問題的方法是,只需使用以下行(更改對nsdata對象的響應)並將該字符串用作值。

NSString *json_string = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

您也不能將NSAttributedString作爲值傳遞。您必須將NSAttributedString更改爲NSString。請檢查OHAttributedLabel lib獲取更多信息。