将JSON对象“原样”存储到数据存储中。

3

我需要将一个嵌套的结构存储到数据存储中。由于遇到了数据存储问题,将嵌套结构展平会导致切片嵌套切片:字段问题,我想将JSON对象不经修改地(以字符串形式)存储到数据存储中。在Go语言中能实现吗?


你使用什么样的“数据存储”?你能分享一个代码示例来重现这个错误吗? - Kluyg
2个回答

3

是的,使用golang可以实现。

无论您的数据存储结构是多么复杂(或嵌套),它都可以转换为json。只需确保映射的键是字符串即可。还要确保数据存储的元素是公共的(以大写字母开头)。如果您不想编码某个字段,则可以将其保留为私有字段(以小写字母开头)。

json.Marshal()函数将返回一个字节数组,可以保存到文件中。

type Complex struct {
  Data1 map[string]int
  Data2 []byte
  TimeStamp time.Time
}
type Datastore struct {
  Name string
  phones []string
  Address map[string]string
  noJson string // Wont be encoded as its not public
  SomethingComplex map[string]Complex
}

1
你应该能够存储json.RawMessage。请参阅包文档中的示例

RawMessage是一个原始编码的JSON对象。它实现了Marshaler和Unmarshaler接口,可用于延迟JSON解码或预计算JSON编码。

它是一个byte切片,但如果需要,可以轻松将其转换为字符串。


我不确定如何在结构体中使用它。假设我有一个有点深度嵌套的结构体(切片的切片等),并想将其存储到Datastore中。我应该如何使用RawMessage来实现? - Ralf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接