1

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

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

Incase NSAttributedString,错误是:

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

如果是 NSData,错误是:

-JSON 表示失败。错误跟踪是:(“错误域 = org.brautaset.JSON.ErrorDomain 代码 = 1 \“NSConcreteMutableData 不支持 JSON 序列化\” UserInfo = 0x7ed2560 {NSLocalizedDescription = NSConcreteMutableData 不支持 JSON 序列化}”

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

谢谢罗希特

4

2 回答 2

2

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

于 2012-01-03T00:09:56.627 回答
1

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

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

您也不能将 NSAttributedString 作为值传递。您必须将 NSAttributedString 更改为 NSString。请检查 OHAttributedLabel 库以获取更多信息。

于 2012-01-04T16:22:15.780 回答