2012-01-02 54 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获取更多信息。