SmartCodable icon indicating copy to clipboard operation
SmartCodable copied to clipboard

`toJSONString`转换的问题

Open IAFung opened this issue 8 months ago • 2 comments

struct SmartModel: SmartCodable {
        @SmartAny
        var name: Any?
        @SmartAny
        var dict: [Any]?
    }
struct SmartModel2: SmartCodable {
        var age: Int?
    }
let dict: [String: Any] = [
            "name": "Mccc",
            "dict": [[
                "age": 10
            ]]
        ] as [String : Any]
guard var smartModel = SmartModel.deserialize(from: dict) else { return }
guard let smartModel2 = [SmartModel2].deserialize(from: smartModel.dict) else { return }
smartModel.dict = smartModel2
print(smartModel.toJSONString())

这种情况下,调用toJSONString无法转换dict的内容 输出内容: "{"name":"Mccc","dict":[null]}"

IAFung avatar May 16 '25 07:05 IAFung

经过smartModel.dict = smartModel2这一步处理,SmartModel. dict变成了[SmartModel2]类型。 进行SmartAny修饰属性的encode的时候目前只支持:

Image

使用上有点超纲了。你应该将 smartModel2 转成 基本数据类型,再赋值给smartModel.dict。

我想想是否有必要内部来做这个转化支持一下。

iAmMccc avatar May 16 '25 11:05 iAmMccc

4.4.4 或 5.0.9版本已经支持。 Image

不过还是不建议你这样使用。 这样使用代表着dict的类型被你人为的改变了。

iAmMccc avatar May 16 '25 12:05 iAmMccc