自定义 Json 封送处理

2024-03-26

我有一个第三方 json api 可以在 go 中使用。
它有一些以键值形式返回数据的端点。
例如,这里是状态的 json:

{
  "result": {
    "0": "done",
    "1": "incomplete",
    "2": "completed",
    ....
  }
}

正如您所看到的,它不是一个数组,而是一个对象。
是否可以将这种 json 编组为对象数组,例如

type Status struct {
    Id int
    Status string
}

不使用额外的结构,如

type StatusReposne struct {
    Result map[string]string `json:"result"`
}

和提取值的代码?


正如 @mkopriva 在评论中所述,如果没有一些额外的工作,这是不可能的。此代码确实提供了将数据编组/解组数据到/从切片中编组/取消编组的方法Statuss:

func main() {
    sr := new(StatusReposne)

    json.Unmarshal([]byte(input), sr)
    fmt.Printf("%+v\n", sr)

    js, _ := json.Marshal(sr)
    fmt.Printf("%s\n", js)
}

type StatusReposne struct {
    Result []Status `json:"result"`
}

type Status struct {
    Id     int
    Status string
}

func (x *StatusReposne) MarshalJSON() ([]byte, error) {
    var buffer struct {
        Result map[string]string `json:"result"`
    }
    buffer.Result = make(map[string]string)
    for _, v := range x.Result {
        buffer.Result[strconv.Itoa(v.Id)] = v.Status
    }
    return json.Marshal(&buffer)
}

func (x *StatusReposne) UnmarshalJSON(b []byte) error {
    var buffer struct {
        Result map[string]string `json:"result"`
    }
    buffer.Result = make(map[string]string)
    json.Unmarshal(b, &buffer)
    for k, v := range buffer.Result {
        k, _ := strconv.Atoi(k)
        x.Result = append(x.Result, Status{Id: k, Status: v})
    }
    return nil
}

var input = `{
  "result": {
    "0": "done",
    "1": "incomplete",
    "2": "completed"
  }
}`
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义 Json 封送处理 的相关文章

  • jQuery AJAX 请求在 IE8 中失败,并显示消息“错误:调用 open 方法之前无法调用此方法。”

    我正在使用 jQuery 1 4 2 并尝试执行一个简单的 AJAX 请求 目标 URL 返回一个 JSON 字符串 我使用 jslint 对其进行了验证 该请求在 Firefox 和 Chrome 中有效 但不想在 IE8 中工作 我无法
  • jQuery:处理 getJSON() 中的错误?

    使用 jQuery 时如何处理 500 错误getJSON http api jquery com jQuery getJSON 有几个关于错误处理的问题getJSON and https stackoverflow com questio
  • 如何在 Ubuntu 中将 Go 程序作为守护进程启动?

    在 Ubuntu 中将 Go 程序作为守护进程启动的正确方法是什么 然后我将使用 Monit 对其进行监控 我应该做这样的事情 go run myapp go 我应该考虑 Go 特有的事情吗 您应该为您的程序构建一个可执行文件 go bui
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 将 List 转换为 JSON

    Hi guys 有人可以帮助我 如何将我的 HQL 查询结果转换为带有对象列表的 JSON 并通过休息服务获取它 这是我的服务方法 它返回查询结果列表 Override public List
  • Android REST API 连接

    我有点傻 对此感到抱歉 我编写了一个 API 它返回一些 JSON 我的目标是从 Android 应用程序使用此 API 我已经尝试过使用 AsyncTask 但失败了 我想像这样使用它 调用该类 告知 URL 和结果的类型 哪个json
  • 根据值匹配数组

    我使用以下代码来解析 yaml 并应得到输出为runners对象和函数build应更改数据结构并根据以下结构提供输出 type Exec struct NameVal string Executer string 这是我尝试过的 但我不知道
  • Anchor Cycler / 下拉菜单定期导入学校班级数据

    SO 我最近一直在研究一些 html javascript css 为我的学生创建一个在线表格来查看详细信息 分数和各种信息 但我遇到了困难 不确定如何做我正在尝试的事情去做 我将所有这些内容发布在一个线程中的原因是因为我认为其中几个可能会
  • 根据属性中的值类型反序列化对象

    TL DR json net 中是否有一种简单的方法来检查属性的类型并基于该类型创建实例 我在 JSON 中有以下两个对象 它们是JSON API http jsonapi org data type Test id 1 and data
  • MySQL 8 用逗号分割字符串并将其转换为JSON ARRAY

    我有以下字符串 a b c d 我想将它转换成一个 json 数组 像这样 a b c d MySQL 8 有什么函数可以实现这个功能吗 Try SELECT CAST CONCAT REPLACE a b c d AS JSON See
  • 使用 TestRestTemplate 和 MockRestServiceServer 时,解析异常而不是实体列表不起作用

    我有一个简单的控制器 CODE https github com joergi tryouts blob main kotlin mockrestserver src main kotlin io joergi kotlinmockrest
  • JSON.stringify 对于大型对象来说非常慢

    我在 javascript 中有一个非常大的对象 大约 10MB 当我对其进行字符串化时 需要很长时间 因此我将其发送到后端并将其解析为一个对象 实际上是带有数组的嵌套对象 这也需要很长时间 但这不是我们在这个问题中的问题 问题 我怎样才能
  • GORM中的一对多递归关系

    我需要有一个Organization与父级有关系 像这样的事情 type Organization struct gorm Model Parent Organization gorm ForeignKey ParentId Name st
  • 在 JSON 对象中存储和发送原始文件数据

    我正在寻找一种方法来传输任何文件类型的原始文件数据和任何可能的内容 我的意思是文件和文件内容都是用户生成的 在 Backbone 前端中使用 xhr ajax 调用两种方式针对 Django 后端 编辑 也许问题仍然不清楚 如果您在 IDE
  • 如何通过填充 NSDictionary 以 JSON 格式发送 UIImage

    我正在尝试使用 JSON 将数据发送到服务器 我可以使用我的对象和关键参数创建 NSDictionary 但我想发送我的图片 图片是UIImage NSDictionary mainJSON NSDictionary dictionaryW
  • 使用 Gorilla 会话自定义后端有什么优势?

    我想使用 Redis 进行会话管理 但我不明白使用 Redis 作为 Gorilla 会话包的自定义后端比直接使用它有什么优势 Gorilla 会话包的链接 http www gorillatoolkit org pkg sessions
  • Go 编程语言中的“方法需要指针接收器”

    我刚刚看到了 Go 编程语言的演示 并想尝试写几行 一切工作正常 直到我尝试在这种情况下使用界面 我该如何解决这个问题 package main import fmt type entity float32 func e entity in
  • 将 JSON 数据导入 Google 表格

    我从 Web 服务中提取数据 其格式为 JSON 我正在为 Google Sheets 编写一个 Google Apps 脚本 它将为我填充数据 我的问题是 我似乎无法解析它 Doing var dataset myJSONtext Bro
  • 使用 Ajax.Request 将 JSON 从浏览器传递到 PHP 的最佳方法

    您好 我有一个 JSON 对象 它是一个二维数组 我需要使用 Ajax Request 将其传递给 PHP 我知道的唯一方法 现在我使用js函数手动序列化我的数组 并获取以下格式的数据 s 1 d 3 4等 我的问题是 有没有办法更直接 有

随机推荐

  • 如何使用 gradle 任务解析 .json 文件并从中获取 json 数据?

    有没有一种方法可以在 gradle 任务的帮助下解析 xyz json 文件并获取其中的所有单独的 json 数据 例如 我想解析存储在我的资产文件夹中的 xyz json 文件中的数据并获取其中的所有值 例如 获取 类型 的值 type
  • 在CSS中创建凹角[重复]

    这个问题在这里已经有答案了 是否可以在CSS中创建这样的凹角 如果是 你会怎么做 莉亚 维鲁有一个如何执行此操作的描述 http lea verou me 2011 03 beveled corners negative border ra
  • 使用 jQuery getJSON 时 JSON Feed 返回 null

    http portlandonline com shared cfm json cfm c 27321 http portlandonline com shared cfm json cfm c 27321 它返回 null 我真的无权接触
  • 匿名委托中捕获的私有字段

    class A public event EventHandler AEvent class B private A foo private int bar public void AttachToAEvent foo AEvent del
  • 数据工厂子项修改或创建日期

    我有一个数据工厂 V2 管道 由 获取元数据 和 forEach 活动组成 用于读取文件共享 本地 上的文件列表并将其记录在数据库表中 目前 我只能读取文件名 但还想检索每个文件的修改日期和 或创建日期属性 有什么帮助吗 谢谢 Accord
  • 使用SQL计算时间序列中的时间间隔

    我有一个像这样的 MySQL 表 CREATE TABLE IF NOT EXISTS vals DT datetime NOT NULL value INT 11 NOT NULL PRIMARY KEY DT DT 是唯一的日期和时间
  • iOS 自定义字体已移位

    对于一个项目我买了一个OTF字体并将其包含到我的项目中 添加到 plist 文件等 它有效 我可以在按钮上设置字体 但标签会被替换 我添加了屏幕截图 以便您可以看到我的问题 有人知道问题出在哪里吗 系统 iPad 3 iOS 6 0 bet
  • 有什么办法可以提取底层Xaml吗?

    无论如何 是否可以从控件中提取底层 xaml IE 我有一个名为 fooBox 的文本框 我可以在运行时从文本框获取代表文本框的 xaml 吗 这向您展示了完整的生命周期 从控件到 XAML 再到控件 如你看到的 string s Xaml
  • 有保证的方法可以在运行时获取成员字段的源顺序吗?

    我正在寻找一种按源顺序检索 在运行时 类的字段的方法 以便我可以执行自己的 初始化处理 该处理基于声明的顺序 我知道 Javadoc 用于Class getDeclaredFields 明确指出不保证订单 SO 上的一些答案指向Javass
  • iOS7中选择单元格时UITableView分隔线消失

    在我的 tableView 中 我在单元格之间设置了分隔线 我允许选择多个单元格 这是我设置选定单元格背景颜色的代码 UIView cellBackgroundColorView UIView alloc initWithFrame cel
  • 如何从没有 jenkinsfile 的存储库触发 Jenkins 管道构建?

    我有一个不包含詹金斯文件 https jenkins io doc book pipeline jenkinsfile 而且我无法影响存储库本身 这意味着我既不能向存储库添加也不能更改任何文件 在本例中 它是Qt repo http cod
  • ArrayAdapter 中 textview 的自定义字体

    我正在尝试更改 a 的字体TextView in my ArrayAdapter 字体chantelli antiqua ttf位于资产文件夹中 这是我的 Java 代码 listItemAdapter new ArrayAdapter
  • 按字母顺序对数组进行排序

    我有一个数组 我需要按出现次数对其元素进行排序 然后按字母顺序排序 例如 55 The 32 ASomething 32 BSomething ASomething should come before Bsomething because
  • 在iOS中以编程方式生成ppt

    为了生成 PDF 文件 我们可以使用 Core Graphics 同样 是否有任何框架 类可用于通过代码生成 ppt 幻灯片演示 文件 或者是否有任何第三方框架用于此目的 没有内置的 Apple API 我也从未听说过有这样的第三方框架
  • 将 sybase 中现有的 int 列更改为标识

    赛贝斯12 5 我有一个正在生产中的现有表 需要更改它的 PK int 列 以便自动填充 创建表时 理想情况下将 ID 列创建为标识 此 ID 列是多个其他表中的外键 因此不能删除该表并重新开始 问题是 我无法将 PK 设置为 IDENTI
  • 如何使面板内的鼠标拖动从窗口移开?

    我想启用这个 System Windows Forms Panel 以便如果用户单击并拖动鼠标 则将窗口拖动到周围 我可以这样做吗 我必须实施多个事件吗 最适合我的解决方案是使用非托管代码 与 HatSoft 发布的答案不同 它可以为您提供
  • MySQL:如何实现行级事务锁定而不是表锁定

    这是用例 我有一张桌子 上面有一堆可用或不可用的唯一代码 作为事务的一部分 我想选择表中可用的代码 然后在事务中更新该行 由于这种情况可能会同时在许多会话中同时发生 因此我希望理想地选择一个随机记录并在表上使用行级锁定 以便其他事务不会被从
  • 将美国州名映射到字典中分别给出的两个字母首字母缩略词

    假设现在我有一个dataframe有 2 列 州和城市 然后我有一个单独的dict每个州的两个字母的缩写 现在我想添加第三列来映射州名称及其两个字母的缩写 我应该在 Python Pandas 中做什么 例如示例问题如下 import pa
  • Swift 2.0,SpriteKit - 滚动视图不使用页面。

    好的 我有一个滚动视图 它已被子类化 可以应用于我在这里问的上一个问题中的任何场景 SpriteKit Swift 2 0 反向滚动视图 https stackoverflow com questions 34712427 spriteki
  • 自定义 Json 封送处理

    我有一个第三方 json api 可以在 go 中使用 它有一些以键值形式返回数据的端点 例如 这里是状态的 json result 0 done 1 incomplete 2 completed 正如您所看到的 它不是一个数组 而是一个对