SwiftyJson能否将自定义Swift类转换为json字符串?

9
以下是我的自定义Swift类。我的问题是如何使用SwiftyJson将此类的对象转换为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);

6
你的问题提出有误:SwiftlyJson是一个读取JSON的库,它不会生成JSON。 - Gwendal Roué
如果你正在寻找类似于Java的GSON功能,我认为你不能在Swift中实现。 - Fonix
@Gwendal Roué:天哪..我完全迷失了。非常感谢您的提醒,是否有其他在Swift中实现这个的替代方法? - Asanga Dewaguru
@Fonix 谢谢。是的,我需要一个在Swift中可行的解决方案。 - Asanga Dewaguru
4个回答

9

更新

OP现在对EVReflection感到满意。因此,我认为此时它是最好的选择。

原始答案

由于Swift反射能力还不如Java中的google-gson,目前没有终极解决方案。

SwiftJSONSwift ObjectMapper这样的库只是封装了NSJSONSerialization,需要您定义从json字段到对象属性的映射。

但是事情正在改变,您可以尝试使用JsonSerializerSwift。我尚未使用过它,但它使用Swift反射,并且似乎工作得很好。

还要查看Chris Eidhof的Swift镜像和JSON文章。它解释了如何使用反射来进行JSON序列化的方法。


非常感谢。这几乎解释了我在这里拥有的所有选项。我将尝试使用JsonSerializerSwift。 - Asanga Dewaguru
1
看起来JsonSerializerSwift在转换包含嵌套对象的复杂对象时存在一些问题。我想到的最好的替代方案是"EVReflection" (https://github.com/evermeer/EVReflection)。它可以将对象转换为json,也可以将json转换为对象。这个方法非常有效。 - Asanga Dewaguru
谢谢!我在我的回答中添加了链接。 - mixel
Asa:我想改进JsonSerializerSwift。你介意详细说明一下导致问题的数据结构吗?我在推特上。 - Peheje

3

1
在Swift 4中,现在内置了Codable框架。根据我的研究,对于那些可以升级到最新版本语言的人来说,这是最好的选择。
如果属性名称相同,只需几行代码就可以调用json解码器,如果它们不同,只需编写一个小的switch语句来映射它们。
我相信在未来几个月中会出现一个库来处理标准映射情况,但除此之外,开箱即用的情况看起来非常不错。
在这里查看:http://benscheirman.com/2017/06/ultimate-guide-to-json-parsing-with-swift-4/

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接