当前位置: 首页 > 面试题库 >

Golang用DYNAMIC键解析json

国胤
2023-03-14
问题内容

我有一个json字符串,如下所示:

j := `{"bvu62fu6dq": {
           "name": "john",
           "age": 23,
           "xyz": "weu33s"
           .....
           .....}
      }`

我想从上面的json字符串中提取nameand
的值age。我看了在golang网站http://play.golang.org/p/YQgzP7KPp9上给出的示例

但是我的问题是json在顶层的关键是动态的。这意味着bvu62fu6dq是动态的。我创建了这样的结构:

 type Info struct {
   UniqueID map[string]string
 }

但不确定如何提取name和提取age。我的代码在http://play.golang.org/p/Vbdkd3XIKc


问题答案:

我相信你想要这样的东西:

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

type Info map[string]Person

然后,在解码后可以使用:

fmt.Printf("%s: %d\n", info["bvu62fu6dq"].Name, info["bvu62fu6dq"].Age)

完整示例:http://play.golang.org/p/FyH-
cDp3Na



 类似资料:
  • 我有一个json字符串,如下所示: 我想从上面的json字符串中提取< code>name和< code>age的值。我看了这个在http://play.golang.org/p/YQgzP7KPp9 golang网站给出的例子 但是我的问题是json顶层的键是动态的。这意味着< code>bvu62fu6dq是动态的。我创建了这样的结构: 但不确定如何提取<代码>姓名 和<代码>年龄 。我的代码

  • 问题内容: 我正在尝试使用Go解析YAML文件。问题在于YAML文件中的密钥可能并不总是相同。这是为了进行API版本控制,以便用户可以定义他们支持的版本。例如V1,V2,V3等。它们不需要按顺序排列,并且可以省略它们不支持的版本,例如V0,V2,V5等。 这是最高层,我还没有从结构内部弄清楚如何做到这一点。 问题答案: 首先,您尝试将根解析为,但其实际类型为。其次,如果要保留该类型结构,则需要一个

  • 我正在尝试使用 Go 解析 YAML 文件。问题是 YAML 文件中的键可能并不总是相同的。这是为了执行 API 版本控制,以便用户可以定义他们支持的版本。例如 V1、V2、V3 等。它们不需要按顺序排列,可以省略它们不支持的版本,即 V0、V2、V5 等。 我在这里看到一个类似的问题 这是顶层,我还没有完全弄清楚如何从结构内部执行此操作。

  • 问题内容: 场景:我正在尝试解析一个XML结构,但我不知道如何在xml属性值包含文本和更多嵌套值的情况下建立结构。所有其他属性都已正确设置,我不确定是否需要获取源的值并创建一个单独的解析器来检索元素的值。 编辑: 我正在尝试将源解析为以下形式的字符串:你好%{first_name}%{last_name} 用当前结构解组xml字符串将返回一个空结构 使用innerxml的@plato将源设置为:

  • 问题内容: 在python中,您可以获取json对象并从中获取特定项目,而无需声明结构,将其保存到结构中,然后像Go中那样获取值。有没有一种包装或更简单的方法来存储Go中来自json的特定值? 蟒蛇 走 问题答案: 您可以解码为,然后按键获取元素。 通常首选结构,因为它们对类型更明确。您只需要在所需的JSON中声明字段,而无需像使用映射(隐式编码/ json处理)那样键入assert值。

  • 问题内容: 我试图从下面的curl输出中获取说“ ip”的值: 我在互联网上发现了许多示例来解析curl请求的json输出,并且编写了以下代码,但这似乎并没有给我说“ ip”的值 如果有人可以向我提示我需要添加到代码中以获得“ ip”值的提示,我将不胜感激。 问题答案: 您可以创建结构来模仿json结构,然后对json进行解码。 输出为: 通过将其解码为一个结构,您可以循环遍历任何切片,而不会局限