【问题标题】:Is SwiftyJson capable of converting a custom swift class to a json string?SwiftyJson 是否能够将自定义 swift 类转换为 json 字符串?
【发布时间】:2016-04-19 10:12:48
【问题描述】:

下面是我的自定义 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);

【问题讨论】:

  • 你的问题是错误的:SwiftlyJson 是一个读取 JSON 的库。它不产生 JSON。
  • 如果你正在寻找像 GSON for java 这样的功能,我认为你不能在 swift 中做到这一点
  • @Gwendal Roué:天哪……我完全迷路了。非常感谢您的提醒,是否有其他替代方法可以快速做到这一点?
  • @Fonix 谢谢。是的,我需要一个可以快速运行的解决方案

标签: ios json swift swifty-json


【解决方案1】:

更新

OP 现在对EVReflection 很满意。所以我认为目前这是最好的选择。

原始答案

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

SwiftJSONSwift ObjectMapper 这样的库只是加糖NSJSONSerialization 并要求您定义从json 字段到对象属性的映射。

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

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

【讨论】:

  • 非常感谢。这解释了我在这里的几乎所有选项。我会尝试使用 JsonSerializerSwift。
  • 看起来 JsonSerializerSwift 在转换包含嵌套对象的复杂对象时存在一些问题。我想出的最佳选择是“EVReflection”(github.com/evermeer/EVReflection)。也可以转换 object->json 和 Json->object。这就像一个魅力。
  • 谢谢!我添加了指向我的答案的链接。
  • Asa:我想改进 JsonSerializerSwift。您介意详细说明导致问题的数据结构吗?我在推特上。
【解决方案2】:

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

您使用 serialize 将 PPJSONSerialization 类序列化为 JSON String 或 JSON Data,这是将数据传递到服务器的完美方式。

【讨论】:

    【解决方案3】:

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

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

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

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

    【讨论】:

      【解决方案4】:

      从 Swift4 中我们可以使用 JSONEncoder 本身将 Object 模型转换为 Json String。

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

      参考:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-12
        • 1970-01-01
        • 2017-10-18
        • 2015-01-11
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多