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

285 天前
 kyonn

如下这种针对 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"
         }
      ]
   }
}



979 次点击
所在节点    程序员
2 条回复
finab
285 天前
我反正这样写
```
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
285 天前
enum ReplyType {
case id(record_id:String)
case record(resource_record: [RecordModel])
}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1095450

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX