在我的 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 时,即使包含对象,weight
属性也会被忽略,我得到一个如下所示的 JSON:SUVCar
arrayOfCars
SUVCar
[{brand: "MyBrand"}, {brand: "MyBrand"}]
那么如何在我的 JSON 中获取 的weight
属性?SUVCar
我错过了什么?
谢谢。