go语言json解析的坑 注意事项
注意事项:
1. 结构体中的字段名首字母需大写,这样解析json时才能赋值;字段名小写的话,解析不会报错,但是字段都是空值
2. json字符串可以解析成结构体数组,或者结构体指针的数组,具体操作可见笔者的另外一篇博客
例子如下:
结构体定义:注意此时结构体字段的首字母是小写,也就是解析json时会失败
type robot struct {
name string `json:"name"`
amount int `json:"amount"`
}
json字符串为
str := "{\"name\":\"nam1\",\"amount\":100}"
解析代码如下
func parse_one() {fmt.Println("解析json字符串到单个结构体")str := "{\"name\":\"nam1\",\"amount\":100}"one := robot{}err := json.Unmarshal([]byte(str), &one)if err != nil {fmt.Printf("parse_one(), err=%v", err)}fmt.Printf("name=%v,amount=%v \n", one.name, one.amount)
}
打印结果如下:可以看到解析出来的字段都是空值
所以我们要做修改,结构体定义如下,即字段首字母大写
type robot struct {
Name string `json:"name"`
Amount int `json:"amount"`
}
再执行上面的解析函数,可以看到打印结果,里面字段已经有值了
完整的正确代码如下
package main
import ("encoding/json""fmt"
)
type robot struct {Name string `json:"name"`Amount int `json:"amount"`
}
// 解析到单个结构体
func parse_one() {fmt.Println("解析json字符串到单个结构体")str := "{\"name\":\"nam1\",\"amount\":100}"one := robot{}err := json.Unmarshal([]byte(str), &one)if err != nil {fmt.Printf("parse_one(), err=%v", err)}fmt.Printf("name=%v,amount=%v \n", one.Name, one.Amount)
}
func main() {// 解析到单个结构体parse_one()
}
go语言json解析的坑 注意事项相关推荐
- 易语言json解析 没有数组的成员数
问题 像这种没有引索的数组成员数据怎么获取到? 解决 .局部变量 json, 类_json .局部变量 i, 整数型 .局部变量 name, 文本型, , "0" json.解析 ...
- Golang json解析踩坑
背景 众所周知,PHP是弱类型,Go是强类型,所以Go的json解析注定曲折. 有一段json如下: {"name":"Gopher","age&qu ...
- C语言 JSON 解析库 - MJSON使用介绍
安装: 解压出来,然后直接包含 json.h 就可以了. 下面是几个官方给出的几个例子,由于直接拷贝过来编译没通过,做了一些修改,详见注释部分. [mjson例一] 01 <strong> ...
- 一文搞定json解析和封装问题,手把手带你学习CJSON开源代码
cJSON保姆级教程 JSON简介 cJSON介绍 基本使用操作 关键数据结构 设计思想 JSON数据解析 解析步骤 json数据封装 封装步骤 封装示例 使用注意事项 内存及时释放 内存钩子 阅读心 ...
- 在C语言中解析json配置文件
业务需求 在C或者C++项目中常常需要解析配置文件,我们常见的配置文件格式一般就是.ini,xml,lua或者是一般的text文件,这些格式比较恼人的一个问题就是数据格式过于冗余,或者功能不够强大,不 ...
- c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库
CSON 基于cJSON,运行于C语言平台的json-struct模型解析工具 简介 CSON是一个简单的cJSON的二次封装,相比于使用原生cJSON一层一层解析的方式,CSON采用模型映射的方式, ...
- c语言json结构体_C语言解析JSON源码
2020-01-09 关键字:cJSON.linux JSON解析 JSON 是一种在互联网领域内很常用的轻量级数据交换协议. 它与 XML 的地位差不多,但就笔者而言,笔者更喜欢 JSON 的风格, ...
- C语言 JSON数据格式解析
C语言 JSON数据格式解析 一.如何用c语言编写与解析json数据格式,这篇主要是使用一个第三方的json库,本人已经上传至csdn,下载链接在下方. 二.json库代码文件下载地址(json.ra ...
- JavaScript语言精粹JSON解析器源码阅读
1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...
最新文章
- C++基本知识点集锦(2022秋招)
- Vivadoz中Block Memory Generator v8.3的使用方法(二)
- 【转】IIC总线的FPGA实现
- 使用nginx缓存服务器上的静态文件
- Python 使用 UTF-8 编码(转)
- 发现一个骨灰级图形学大神的博客
- image caption优秀链接
- Response_案例3_输出字节数据
- python 显示图片matplotlib_Python OpenCV ——Matplotlib显示图片
- 问题解决 | maven包冲突了怎么办,这款插件你不容错过
- 电脑机房用成品——名词解释
- linux上验证cudnn是否安装成功_Ubuntu 18.04安装CUDA(版本10.2)和cuDNN
- SQL 数据库开发一些精典的代码(转永南)
- OJ-1:时钟问题【九度1553】
- docker的macvlan网络
- 账号通过邮箱找回密码功能设计
- “一人单挑 BAT”,黑客张福:我要的东西,比钱更贵
- clientX,offsetX,pageX,screenX的异同以Chrome浏览器测试
- 数学之美:e^x 是如何得到的
- Cannot run program python问题解决
热门文章
- FTPClient.listFiles() 放到linux上,返回值为null或数组长度为0
- CRM 客户关系管理
- 关于Linux系统的运行级别
- C++debug调试出现heap corruption detected: after normal block 可能的原因
- CodeForces - 343D Water Tree(树链剖分+线段树)
- 数据模型与决策_数据模型与决策复习资料拿走不用客气
- windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
- 容斥原理应用(求1~r中有多少个数与n互素)
- 6.变量的使用.rs
- 动态语言和静态语言的比较