json - 将 NSObject 转换为 JSON 字符串
问题描述
我有一个符合 NSObject 的类,并且有 NSNumber 和 NSMutableArray 之类的字段,所以这里不能真正使用 Codable。
所以类是这样的:
class Custom: NSObject {
var users: NSMutableArray?
var type: NSNumber?
.. and many more fields
}
现在我有一个此类的对象,并想从该对象获取 JSON 字符串:
我试过以下:
let json = try? JSONSerialization.data(withJSONObject: customObject, options: JSONSerialization.WritingOptions.prettyPrinted) as? [String: Any]
let json = try? JSONSerialization.data(withJSONObject: paymentData, options: JSONSerialization.WritingOptions.prettyPrinted)
上面的两个代码给出了像 JSON write 中的 Invalid top-level type'
And used SwiftyJson library too but that too gave the error SwiftyJSON.SwiftyJSONError.unsupportedType
我想尝试 Codable 但这需要我将 NSNumber 转换为 Int 并将 MSMutableArray 转换为 Array 但我无法真正更改这一点,因为我在许多其他地方都使用过此代码,而且我的代码正在使用 Objective C,所以我不得不使用 NSNumber或者不得不在 Int 和 NSNumber 之间转换太多次。
是否有不需要更改类的当前实现并仍将对象转换为 json 的解决方案。任何帮助,将不胜感激。
解决方案
推荐阅读
- azure-data-factory - 在 azure 数据工厂中以数组格式存储单列 csv 文件
- mysql - 如何将两个单独的 sql 查询组合成两个单独的列?
- arrays - 可以在 C 中正确声明一个 char 字符串
- javascript - AddEventListener 不适用于动态 DOM
- linux - 什么是 SET_NETDEV_DEV 函数是它是否使“pci_dev”成为“net_device”的父级。它有什么作用。瑞昱
- oop - 涉及 HTMLElements 的决策树的规则模式、状态模式或其他东西?
- paypal - PayPal 权限 API 更新集成
- javascript - 为什么相同的“按钮计数器代码”在 Sandbox React 中不起作用
- python - 从保存的 HTML 文件返回日期 *如果*日期存在
- spring-boot - 根据 Camunda 中的产品属性进行动态用户任务分配