• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kyonn
V2EX  ›  程序员

咨询个基础反序列化问题.

  •  
  •   kyonn · Dec 6, 2024 · 1211 views
    This topic created in 524 days ago, the information mentioned may be changed or developed.

    如下这种针对 dns record 的操作, 因为增删改查操作不同, 导致 server 回复的数据不同, 针对这种情况, 反序列化的结构体要复用一个,使用枚举,可选字段之类的机制. 还是针对增删改查, 都定义单独的反序列化结构体?

    一般常见的实践是怎么样的, 方便的话提供下理由就更好了, 谢谢.

    {
       "request":{
          "operation":"dnsAddRecord",
          "ip":"55.555.55.55"
       },
       "reply":{
          "code":300,
          "detail":"success",
          "record_id":"1a2b3c4d5e"
       }
    }
    
    {
       "request":{
          "operation":"dnsDeleteRecord",
          "ip":"55.555.55.55"
       },
       "reply":{
          "code":300,
          "detail":"success"
       }
    }
    
    
    {
       "request":{
          "operation":"dnsListRecords",
          "ip":"55.555.55.55"
       },
       "reply":{
          "code":300,
          "detail":"success",
          "resource_record":[
             {
                "record_id":"1a2b3c4d5e6f",
                "type":"A",
                "host":"test.namesilo.com",
                "value":"55.555.55.55",
                "ttl":"7207",
                "distance":"0"
             }
             {
                "record_id":"5Brg5hw25jr",
                "type":"CNAME",
                "host":"dev.namesilo.com",
                "value":"testing.namesilo.com",
                "ttl":"7207",
                "distance":"0"
             }
             {
                "record_id":"fH35aH4hsv",
                "type":"MX",
                "host":"namesilo.com",
                "value":"mail.namesilo.com",
                "ttl":"7207",
                "distance":"10"
             }
          ]
       }
    }
    
    
    
    
    2 replies    2024-12-06 11:42:02 +08:00
    finab
        1
    finab  
       Dec 6, 2024
    我反正这样写
    ```
    struct ReplyModel {
    var code:Int
    var detail:String

    var record_id:String?
    var resource_record: [RecordModel]?

    var type: ReplyType {
    get {
    if record_id !=nil { return .... }
    }
    }
    }
    ```
    finab
        2
    finab  
       Dec 6, 2024
    enum ReplyType {
    case id(record_id:String)
    case record(resource_record: [RecordModel])
    }
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5799 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 01:54 · PVG 09:54 · LAX 18:54 · JFK 21:54
    ♥ Do have faith in what you're doing.