json - 如何创建这个 JSON 对象?

标签 json go

{
  "query": {
    "query_string": {
      "query": "<query string>"
    }
  }
}

我使用的 API 要求我以这种格式发送查询。我一直在尝试寻找一种使用 map 来创建它的方法,但我不断收到错误消息,并且无法在线找到任何解决方案。

编辑:我找到了一种方法,还有更好的方法吗?

    test := map[string]map[string]map[string]string {
        "query": map[string]map[string]string {
            "query_string": map[string]string{
                "query": query,
             },
        },
    }

最佳答案

在 Go 中,您可以解码为各种不同的结构。最模糊的是接口(interface){}。我建议不要这样做,因为您放弃了拥有任何真实类型安全的机会。另一个极端是使用结构,对于您的示例 json,它们看起来像这样;

type Wrapper struct {
    Query Query `json:"query"`
}

type Query struct {
    QueryString QueryString `json:"query_string"`
}

type QueryString struct {
     Query string `json:"query"`
}

中间的东西,例如 json 将是 map[string]map[string]map[string]。如果您不知道如何使用 encoding/json 包,请查看此处的示例。 https://golang.org/pkg/encoding/json/#example_Unmarshal

这非常简单,如果您在 []byte 中输入,然后实例化要将其解码到的类型,您只需调用 json.Unmarhsal(jsonBytes, &ThingToUnmarshalInto)

编辑:根据 hobbs 的评论,您似乎实际上是在尝试将该 json 发送到服务器。在这种情况下,请使用上面的结构。另一个答案中提供的示例演示了您需要的一切。一切都与我上面描述的几乎相同,除了你调用 json.Marshal 并使用你想要转换为 json 字符串的实例,而不是将 json 字符串作为 []byte 并将其传递给 unmarshal 以获取结构。我误以为您收到的是 json,而不是试图形成它。

关于json - 如何创建这个 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186710/

相关文章:

javascript - 如何在特定的快速路线上设置不同的bodyparser

multithreading - 在错误组中运行多个服务器的问题

go - 为什么 Golang Intellisense 在 VS Code 中更改导入时速度很慢?

c - 是否需要 C.GoBytes 来检索 C 缓冲区,或者这里的指针是否足够?

php - 如何从 php 获取 JSON 数据并显示到 android 中的 textview?

json - PowerShell形成格式正确的json以进行日历输入

javascript - 如果 JSON 属性名称包含句号,则模板失败

java - JSON 对象不正确并导致 HttpException

go - 解析 RSA 公钥时出错

go - Golang在处理程序功能之外获取请求