【问题标题】:deserialize comma-separated values into struct将逗号分隔的值反序列化为结构
【发布时间】:2016-03-20 22:18:29
【问题描述】:
假设我有一个这样的字符串:
key1=val1、key2=val2(以此类推)
我想将它反序列化为一个结构(我在代码中定义的类型),就像我们对 JSON 或 XML 所做的那样。 Ofc 可以写一个解码器函数,但我认为它可能存在,因为编写自己的反序列化器可能需要一些时间,在这样做之前我认为可能有 Go 的标准库方式。
【问题讨论】:
标签:
serialization
go
comma
【解决方案1】:
不知道有一个图书馆可以满足您的要求。但是使用这样的字符串很容易。如果只需要几种类型的结构,我会使用 strings.Split(s, ", ") 创建一个 key=value 字符串切片,然后使用 strings.Split(ss, "= ") 如果我想快速编写不需要高效的代码,请再次在片段上。然后通过 switch 语句运行键值并更新匹配的结构字段。
如果我想让它变得超级高效,我会围绕 switch 语句编写一个循环,将两个字节切片重置为每个后续键和值,而不是先创建字符串切片。
另一方面,如果我想快速编写代码并使用多种类型的结构,我会将字符串修改为合法的 JSON,然后使用 JSON Unmarshal() 函数。写起来会很快,而且 json.Unmarshal() 错误会告诉你是否遗漏了什么。