首页 > 后端开发 > Golang > 正文

以下是一些标题选项,重点关注问题和解决方案: **直接问题

Linda Hamilton
发布: 2024-10-25 11:43:02
原创
335 人浏览过

Here are a few title options, focusing on the problem and solution:

**Direct Question

JSON 解码为结构体与映射

在所描述的场景中,应用程序接收一个包含与 JSON 匹配的结构体的接口{}作为字节数组接收的结构。然而,在 JSON 解码时,结果是一个映射而不是预期的结构。

此行为是由于 json.Unmarshal 处理指针的方式造成的。通过引用最初保存该结构的接口{},解码过程无法确定底层类型。因此,它返回一个简单的映射,而不是所需的结构。

要纠正此问题,可以考虑两种方法:

1。直接接口转换:

将指向结构体的指针直接传递给 json.Unmarshal 作为抽象接口:

<code class="go">var ping interface{} = &Ping{}
deserialize([]byte(`{"id":42}`), ping)</code>
登录后复制

2.基于反射的指针创建:

如果指向结构体的直接指针不可用,请利用反射创建一个新指针,反序列化到其中,然后将值复制回来:

<code class="go">var ping interface{} = Ping{}
nptr := reflect.New(reflect.TypeOf(ping))
deserialize([]byte(`{"id":42}`), nptr.Interface())
ping = nptr.Interface()</code>
登录后复制

通过采用这两种方法中的任何一种,解码过程都可以正确识别底层结构并从 JSON 数据填充其字段。

以上是以下是一些标题选项,重点关注问题和解决方案: **直接问题的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板