当前位置: 首页 > 知识库问答 >
问题:

用json. Decoder解码顶级JSON数组

公风史
2023-03-14

有可能用json. Decoder解码顶级JSON数组吗?

或者阅读整个JSON和JSON。在这种情况下,解组是唯一的方法吗?

我已经阅读了这个问题中公认的答案,不知道如何将其与顶级JSON数组一起使用

共有2个答案

卢恩
2023-03-14

https://play.golang.org/p/y2sKN7e8gf

请注意,不建议使用var r interface{},您应该将JSON结构定义为Gostruct,以正确解析它。

赫连华皓
2023-03-14

您可以使用json。解码器的方式与任何其他json相同。唯一的区别是,json不需要解码成结构,而需要解码成结构的一部分。这是一个非常简单的例子。去操场

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
)

type Result struct {
    Name         string `json:"Name"`
    Age          int    `json:"Age`
    OriginalName string `json:"Original_Name"`
}

func main() {
    jsonString := `[{"Name":"Jame","Age":6,"Original_Name":"Jameson"}]`
    result := make([]Result, 0)
    decoder := json.NewDecoder(bytes.NewBufferString(jsonString))
    err := decoder.Decode(&result)
    if err != nil {
        panic(err)
    }
    fmt.Println(result)
}
 类似资料:
  • 问题内容: 根据这篇文章中的辩论:[json-conversion-in- javascript] 结果对我来说是这样的: 就我所见,这很好。它可能看起来有些怪异,但这主要是因为JSON在对象中使用了很多,它们的符号略有不同。您可以评估字符串并返回数组结构,所以对我来说很好。 问题答案: 是的,数组作为顶级JSON文本是合法的。 有三个定义JSON的标准文档:RFC 4627,RFC 7159 (

  • 问题内容: 我有一个包含项目列表的JSON文件。存储在此文件中的唯一东西是作为数组的项目。例如: 我想为此定义一个架构文件。这看起来很好,因为可以将初始类型设置为数组,并且我可以将项目定义为类型。但是我想引用项目json文件中的架构。不幸的是,它不是一个对象,因此我无法添加密钥。我当然可以使json一个对象只有一个具有数组值的键,但这似乎不是一个好的设计。 模式系统似乎存在设计错误,还是不支持顶级

  • 问题内容: 我有一些从Web服务返回的JSON数据。JSON是顶级数组: 使用make 可以对数组中包含的数据进行反序列化,但是,我无法让Serde对顶级数组进行反序列化。 我是否缺少某些内容,还是Serde不能对顶级数组进行反序列化? 问题答案: 您可以使用:

  • 我正在尝试使用Jolt进行从顶级json数组到另一个数组的复杂转换。在每个项目中,我都有几个需要映射到另一个的对象。当它是简单的字符串时,我可以很容易地映射它们,但当它是关于对象到对象的时,我无法找到如何进行映射。在下面的示例中,我想从客户对象中提取数据。我想为其他几个人做这件事,比如地址和order_items这是我的输入: 这是规格文件 目前,我的输出是 我希望这样: 有人知道怎么做吗? 更新

  • 问题内容: 我有一个用于ERP系统的快速开发工具,该工具仅允许使用vbscript。我正在尝试使用VBS创建一个简单的AJAX请求。可以使用“ Microsoft.XMLHTTP”对象。 下一步是使用json从网络服务器接收数据。但是在VBS中似乎没有像“ json_decode”或其他功能。 有人知道解决方案吗?还是开发自己的json函数的唯一选择? 问题答案: 由于JSON是一种分层数据格式,

  • 问题内容: 在下面的视频中,Microsoft PDC演示者在时间标记21:40处说,包装所有JSON以使其不是顶级数组很重要: https://channel9.msdn.com/Events/PDC/PDC09/FT12 解开顶层阵列的风险是什么? 我应该如何检查并确定自己是否脆弱?我从第三方购买了许多组件,并且有外部厂商来开发我的代码。 问题答案: 微软之所以这样说,是因为他们尚未修补浏览器