注意事项:

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解析的坑 注意事项相关推荐

  1. 易语言json解析 没有数组的成员数

    问题 像这种没有引索的数组成员数据怎么获取到? 解决 .局部变量 json, 类_json .局部变量 i, 整数型 .局部变量 name, 文本型, , "0" json.解析 ...

  2. Golang json解析踩坑

    背景 众所周知,PHP是弱类型,Go是强类型,所以Go的json解析注定曲折. 有一段json如下: {"name":"Gopher","age&qu ...

  3. C语言 JSON 解析库 - MJSON使用介绍

    安装: 解压出来,然后直接包含 json.h 就可以了. 下面是几个官方给出的几个例子,由于直接拷贝过来编译没通过,做了一些修改,详见注释部分. [mjson例一] 01 <strong> ...

  4. 一文搞定json解析和封装问题,手把手带你学习CJSON开源代码

    cJSON保姆级教程 JSON简介 cJSON介绍 基本使用操作 关键数据结构 设计思想 JSON数据解析 解析步骤 json数据封装 封装步骤 封装示例 使用注意事项 内存及时释放 内存钩子 阅读心 ...

  5. 在C语言中解析json配置文件

    业务需求 在C或者C++项目中常常需要解析配置文件,我们常见的配置文件格式一般就是.ini,xml,lua或者是一般的text文件,这些格式比较恼人的一个问题就是数据格式过于冗余,或者功能不够强大,不 ...

  6. c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库

    CSON 基于cJSON,运行于C语言平台的json-struct模型解析工具 简介 CSON是一个简单的cJSON的二次封装,相比于使用原生cJSON一层一层解析的方式,CSON采用模型映射的方式, ...

  7. c语言json结构体_C语言解析JSON源码

    2020-01-09 关键字:cJSON.linux JSON解析 JSON 是一种在互联网领域内很常用的轻量级数据交换协议. 它与 XML 的地位差不多,但就笔者而言,笔者更喜欢 JSON 的风格, ...

  8. C语言 JSON数据格式解析

    C语言 JSON数据格式解析 一.如何用c语言编写与解析json数据格式,这篇主要是使用一个第三方的json库,本人已经上传至csdn,下载链接在下方. 二.json库代码文件下载地址(json.ra ...

  9. JavaScript语言精粹JSON解析器源码阅读

    1 // 这是一个用JavaScript编写JSON解析器的实现方案: 2 var jsonParser = (function() { 3 // 这是一个能把JSON文本解析成JavaScript数 ...

最新文章

  1. C++基本知识点集锦(2022秋招)
  2. Vivadoz中Block Memory Generator v8.3的使用方法(二)
  3. 【转】IIC总线的FPGA实现
  4. 使用nginx缓存服务器上的静态文件
  5. Python 使用 UTF-8 编码(转)
  6. 发现一个骨灰级图形学大神的博客
  7. image caption优秀链接
  8. Response_案例3_输出字节数据
  9. python 显示图片matplotlib_Python OpenCV ——Matplotlib显示图片
  10. 问题解决 | maven包冲突了怎么办,这款插件你不容错过
  11. 电脑机房用成品——名词解释
  12. linux上验证cudnn是否安装成功_Ubuntu 18.04安装CUDA(版本10.2)和cuDNN
  13. SQL 数据库开发一些精典的代码(转永南)
  14. OJ-1:时钟问题【九度1553】
  15. docker的macvlan网络
  16. 账号通过邮箱找回密码功能设计
  17. “一人单挑 BAT”,黑客张福:我要的东西,比钱更贵
  18. clientX,offsetX,pageX,screenX的异同以Chrome浏览器测试
  19. 数学之美:e^x 是如何得到的
  20. Cannot run program python问题解决

热门文章

  1. FTPClient.listFiles() 放到linux上,返回值为null或数组长度为0
  2. CRM 客户关系管理
  3. 关于Linux系统的运行级别
  4. C++debug调试出现heap corruption detected: after normal block 可能的原因
  5. CodeForces - 343D Water Tree(树链剖分+线段树)
  6. 数据模型与决策_数据模型与决策复习资料拿走不用客气
  7. windows server 2016安装oracle 10_Weblogic12.1.3.0补丁安装(win server与linux安装步骤介绍)
  8. 容斥原理应用(求1~r中有多少个数与n互素)
  9. 6.变量的使用.rs
  10. 动态语言和静态语言的比较