SwiftyJson 是否能够将自定义 swift class 转换为 json 字符串?

Is SwiftyJson capable of converting a custom swift class to a json string?

下面给出的是我的习惯 swift class。我的问题是如何使用 SwiftyJson 将此 class 的对象转换为 json 字符串?

class Equipment{

    var UniqueItemId:String? = ""
    var ItemNo:String? = ""
    var EquipmentType:String? = ""
    var EquipmentDescription:String? = ""
    var Length:String? = ""
    var Wll:String? = ""
    var  EquipmentLocation:String? = ""
    var EquipmentManufacture:String? = ""
    var SerialNo:String? = ""
    var Condition:String? = ""
    var Remarks:String? = ""
    var InspectionDate:String? = ""
    var Inspector:String? = ""

}

例如,像这样:

var jsonString = JSON(equipmentObject);

更新

OP 现在对 EVReflection 很满意。所以我认为在这个时候它是最好的选择。

原始答案

由于 Swift 反射的可能性还没有那么丰富,所以现在没有像 google-gson for Java 这样的最终解决方案。

SwiftJSON and Swift ObjectMapper 这样的库只是加糖 NSJSONSerialization 并且需要您定义从 json 字段到对象属性的映射。

但情况正在发生变化,您可以尝试一下 JsonSerializerSwift。我还没有使用过它,但它使用 Swift 反射并且似乎工作正常。

另请查看 Swift Mirrors and JSON by Chris Eidhof 文章。它解释了 JSON 使用反射可能性的序列化是如何工作的。

可能这会有所帮助:https://github.com/PonyCui/PPJSONSerialization

你使用serialize来序列化PPJSON序列化类到JSON字符串或JSON数据,这是向服务器传递数据的完美方式。

在 Swift 4 中,现在内置了 Codable 框架。根据我的研究,对于那些可以升级到最新版本语言的人来说,这是最好的选择。

如果 属性 名称相同,调用 json 解码器只需几行,如果它们不同,您只需编写一个小的 switch 语句来映射它们。

我相信在接下来的几个月里会出现一个库来处理标准映射情况,但除此之外,开箱即用的东西看起来相当不错。

在这里查看:http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/

从 Swift4 开始,我们可以使用 JSONEncoder 本身将对象模型转换为 Json 字符串。

为此,如果 json 键是标准的,我们只需要使用 Codable 扩展对象。

参考: