1

モデルを辞書に変換するのに問題があります。私のモデルは Codable から継承し、JSONSerialization を使用すると、次の形式の辞書を取得します。

(...,"sensors": <__NSArrayI 0x1105324f0>( {
accx = "-0.002471923828125";
accy = "0.011444091796875";
accz = "-1.013595581054688";
gyrox = "-0.029818882093399213";
gyroy = "0.028939506301455049";
gyroz = "0.0044943506556177227"; }, ...)  

(私のキーは文字列ではありませんが、値はあることに注意してください)

実際にこれが欲しいとき:

(..., "sensors": [ {
"accx" = -0.002471923828125;
"accy" = 0.011444091796875;
"accz" = -1.013595581054688;
"gyrox" = -0.029818882093399213;
"gyroy" = 0.028939506301455049;
"gyroz" = 0.0044943506556177227;} ], ... )

私のモデルは次のとおりです。

class Event: NSObject, Codable {

var latitude: Double?
var longitude: Double?
var speed: Double?
var date: String?
var type: String?
var sensors: [Sensor] = []

}

class Sensor: NSObject, Codable {
   var accx: Double?
   var accy: Double?
   var accz: Double?
   var gyrox: Double?
   var gyroy: Double?
  var gyroz: Double?
}

これを使用して辞書に変換します:

extension Encodable {

var dictionary: [String: Any]? {
    do{

        let encoder = JSONEncoder()
        encoder.outputFormatting = .prettyPrinted
        guard let data = try? encoder.encode(self) else { return nil }
        let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
        print(json)
        return json
    } catch {
        return nil
    }
}
}

私はこれで立ち往生しており、正しい道を進んでいるかどうかわかりません。この辞書の編成方法を変更する必要がありますか?

4

1 に答える 1