如何使用golang etcd客户端创建目录节点?

如何使用golang etcd客户端创建目录节点?,go,coreos,etcd,Go,Coreos,Etcd,我更希望json中有这样的结构: { "a":["b":1, "c":2], "x":["y":3, "z":4] } 我可以使用“a”和“x”作为目录,在它们下面有节点来存储数据。我在文档或示例中找不到如何实现这一点 编辑:我只是通过调用Set的/a/b、/a/c、/x/y&/x/z将其创建为一个目录。这创建了必要的结构,但我正在寻找一个简化版本,也许可以做同样的事情,而不是4个etcd调用。创建目录 etcdctl mkdir 要执行您想要的操作,有以下选项: etcdctl集合myobj

我更希望json中有这样的结构:

{
"a":["b":1, "c":2],
"x":["y":3, "z":4]
}
我可以使用“a”和“x”作为目录,在它们下面有节点来存储数据。我在文档或示例中找不到如何实现这一点

编辑:我只是通过调用Set的/a/b、/a/c、/x/y&/x/z将其创建为一个目录。这创建了必要的结构,但我正在寻找一个简化版本,也许可以做同样的事情,而不是4个etcd调用。

创建目录

etcdctl mkdir

要执行您想要的操作,有以下选项:

etcdctl集合myobject'{“a”:[“b”:1,“c”:2],“x”:[“y”:3,“z”:4]}'

将json保存为一个对象,您可以在一次调用中收回它(使用
get


键是一个字符串,值是一个字符串:所以你可以把你想要的任何东西放在那里,只要它是一个字符串。。。所以JSON是一个字符串,您可以像其他任何东西一样将JSON字符串放在那里


当您需要它返回时,您可以提取json字符串并解析它

一切皆有可能。通常,当您希望使用固定键时,您会决定将数据放入struct。如果键不固定,则选择map[string]X,X取决于成员。在您的情况下-map[string]map[string]int就足够了。但是当您不想固定深度时,它将是map[string]接口{}。只是一个小小的提示-请试着想想你是否真的需要如此灵活的数据结构。因此,“key”字段需要在设置选项中有Dir:true,并且值可以是struct?因此,客户端中的Dir:true对于创建目录很有用。但是,我仍然需要调用2次来创建目录,调用4次来创建键。无论如何,这一切都可以一起完成吗?我必须使用etcd golang客户端,而不是client。然后阅读代码,你会发现:
mkdirCommandFunc(c,mustNewKeyAPI(c),client.PrevIgnore)除了使用4种不同的调用来获得这个结构外,还有一个ETCD API调用吗?将ETCDCTL视为ETCD客户端的“demo”:它可以完成所有客户端的操作。键是一个字符串,该值是一个字符串:只要它是字符串,就可以放置任何你想要的东西。所以JSON是一个字符串,您可以像其他任何东西一样将JSON字符串放在那里。当您需要它返回时,您可以提取json字符串并解析它。