如何将多个对象类型的数组转换为 JSON 而不会丢失 Swift 中的任何对象属性?

问题描述

在我的 iOS Swift 项目中,我需要将对象转换为 JSON。

我有一个简单的类:

class Car : Encodable
{
    var brand: String

    init(brand: String)
    {
        self.brand = brand
    }
}

和一个子类:

class SUVCar : Car
{
    var weight: Int

    init(_ weight: Int)
    {
        self.weight = weight
        super.init(brand: "MyBrand")
    }
}

我使用以下通用函数将对象和数组转换为 JSON:

func toJSON<T : Encodable>(_ object: T) -> String?
{
    do
    {
        let jsonEncoder = JSONEncoder()
        let jsonEncode = try jsonEncoder.encode(object)
        return String(data: jsonEncode,encoding: .utf8)
    }
    catch
    {
        return nil
    }
}

现在假设我想将以下变量转换为 JSON:

var arrayOfCars: Array<Car> = []
arrayOfCars.append(SUVCar(1700))
arrayOfCars.append(SUVCar(1650))

我使用 Array<Car> 作为该数组的类型,因为该数组中还有其他类型的汽车。为了可读性,我只是在这里简化了。

这就是我所做的:

let json = toJSON(arrayOfCars)

但由于某种原因,当转换为 JSON 时,weightSUVCar 属性被忽略,即使 arrayOfCars 包含 SUVCar 对象,并且我得到一个 JSON看起来像这样:

[{brand: "MyBrand"},{brand: "MyBrand"}]

那么如何在我的 JSON 中获取 weightSUVCar 属性?我错过了什么?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)