Objective c 带有SBJSON的NSData或NSAttribute字符串

Objective c 带有SBJSON的NSData或NSAttribute字符串,objective-c,ios,ios4,ios5,sbjson,Objective C,Ios,Ios4,Ios5,Sbjson,我正在使用将NSDictionary转换为iOS应用程序中的JSON字符串 当我的字典包含NSAttributedString或NSData时,SBJSON无法生成字符串表示 对于NSAttributedString,错误为: -JSONRepresentation失败。错误跟踪是:( NSContectEmustableAttributeString不支持“Error Domain=org.brautaset.JSON.ErrorDomain Code=1\”JSON序列化\ 对于NSData

我正在使用将NSDictionary转换为iOS应用程序中的JSON字符串

当我的字典包含NSAttributedString或NSData时,SBJSON无法生成字符串表示

对于NSAttributedString,错误为:

-JSONRepresentation失败。错误跟踪是:( NSContectEmustableAttributeString不支持“Error Domain=org.brautaset.JSON.ErrorDomain Code=1\”JSON序列化\

对于NSData,错误为:

-JSONRepresentation失败。错误跟踪为:( “Error Domain=org.brautaset.JSON.ErrorDomain Code=1\”NSConcreteModableData不支持JSON序列化\” UserInfo=0x7ed2560{NSLocalizedDescription=JSON序列化不可用 支持NSConcertEmustableData}”

解决这两个问题中的至少一个将是一件大事。 请帮忙

谢谢
Roshit

JSON没有任何数据类型可以执行您想要的操作,但您可以将NSData转换为Base64编码字符串。这可以通过NSData上实现-proxyForJson方法的类别自动完成。问题是当您需要在另一端将其转换回NSData时。如果已知密钥,则您可以只使用Base64对该键进行解码。但如果数据部分可以用于任何键,则会有点困难。您必须以某种方式构造数据,以便确定哪些字符串应进行Base64解码。

您不能传递NSData对象。解决问题的方法是,只需使用以下行(更改对NSData对象的响应)并将该字符串用作值

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

您不能同时将NSAttributedString作为值传递。您必须将NSAttributedString更改为NSString。有关详细信息,请查看OHAttributedLabel库。

NSData或NSAttributedString对象包含什么?它是否可序列化为字符串?NSAttributedString是高度格式化的字符串。如中所示,文本的格式为不同索引中的不同属性。NSData是NSAttributedString的数据表示形式。数据表示形式是使用与中类似的代码获得的。请接受其中一个答案;它们似乎合理。或者提供其他信息,以便我们进一步帮助您。