Golang JSON的编码和解析

本文涉及的产品
云解析DNS-重点域名监控,免费拨测 20万次(价值200元)
简介: Golang JSON的编码和解析

go JSON解析 JSON编码

编码


定义一个结构体用来放需要进行JSON编码的数据,结构体的字段名必须是大写开头的可导出字段,否则在解析时会解析不出来

使用json.Marshal(v interface{}) ([]byte, error)进行JSON编码

  type Userinfo struct {
    Id       int `json:"id"`
    Username string `json:"username"`
  }
  u := &Userinfo{}
    u.Id = 1
    u.Username = "lauwen"
  j, err := json.Marshal(u)
  if err != nil {
      fmt.Println(err)
    }
    fmt.Println(string(j))

上述代码输出:

{"id":1,"username":"lauwen"}

解析


使用json.Unmarshal(data []byte, v interface{}) error来进行JSON数据的解析,可以看出第一个参数是[]byte类型数据,所以在使用时需要将字符串类型的JSON数据转换为[]byte类型。
  • 以下使用的解析的JSON字符串都由上一步编码而来,为[]byte类型,无需再转类型。
  • 使用的结构体类型也是上面编码时使用到的结构体,不做重复定义。

JSON解析为结构体

已知JSON结构的时候,可以定义一个结构体来存放JSON解析出来的数据

  var ui Userinfo
  err = json.Unmarshal(j, &ui)
  fmt.Println(ui)

以上代码输出:

{1 lauwen}

JSON解析为map

不清楚JSON数据结构时,可以使用map的来存放JSON解析出来的数据;如下,首先定义了一个map类型数据来接收解析后的JSON数据

  var dj map [string] interface{}
  err = json.Unmarshal(j, &dj)
  fmt.Println(dj)

以上代码输出:

map[id:1 username:lauwen]

完整代码


package main
import (
    "encoding/json"
    "fmt"
)
func main() {
  type Userinfo struct {
    Id       int `json:"id"`
    Username string `json:"username"`
  }
  u := &Userinfo{}
    u.Id = 1
    u.Username = "lauwen"
  j, err := json.Marshal(u)
  if err != nil {
      fmt.Println(err)
    }
    fmt.Println(string(j))
  var ui Userinfo
  err = json.Unmarshal(j, &ui)
  fmt.Println(ui)
  var dj map [string] interface{}
  err = json.Unmarshal(j, &dj)
  fmt.Println(dj)
}


目录
相关文章
|
3月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
5月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
4月前
|
JSON 算法 API
淘宝商品评论API接口核心解析,json数据返回
淘宝商品评论API是淘宝开放平台提供的数据服务接口,允许开发者通过编程方式获取指定商品的用户评价数据,包括文字、图片、视频评论及评分等。其核心价值在于:
|
2月前
|
XML JSON 编解码
重新认识 Golang 中的 json 编解码
欢迎访问[莹的网络日志](https://lifukun.com),分享技术探索与思考。本文深入解析Go中json编解码特性,涵盖字段映射、omitempty行为、性能对比、自定义编解码及json/v2新特性,助你真正掌握json使用细节。
|
2月前
|
JSON Java Go
【GoGin】(2)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
bind或bindXXX函数(后文中我们统一都叫bind函数)的作用就是将,以方便后续业务逻辑的处理。
273 3
|
2月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
186 0
|
6月前
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
225 67
|
3月前
|
JSON 自然语言处理 API
多语言实时数据淘宝商品评论API:技术实现与JSON数据解析指南
淘宝商品评论多语言实时采集需结合官方API与后处理技术实现。建议优先通过地域站点适配获取本地化评论,辅以机器翻译完成多语言转换。在合规前提下,企业可构建多语言评论数据库,支撑全球化市场分析与产品优化。
|
5月前
|
JSON 人工智能 Go
在Golang中序列化JSON字符串的教程
在Golang中,使用`json.Marshal()`可将数据结构序列化为JSON格式。若直接对JSON字符串进行序列化,会因转义字符导致错误。解决方案包括使用`[]byte`或`json.RawMessage()`来避免双引号被转义,从而正确实现JSON的序列化与反序列化。
234 7
|
9月前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
559 4
JSON数据解析实战:从嵌套结构到结构化表格

推荐镜像

更多