Go语言利用Unmarshal解析json字符串的实现
作者:hp_cpp 发布时间:2024-05-09 09:54:25
标签:Go,Unmarshal,解析,json
简单的解析例子:
首先还是从官方文档中的例子:
package main
import (
?? ?"fmt"
?? ?"encoding/json"
)
type Animal struct {
? ? Name ?string
? ? Order string
}
func main() {
?? ?var jsonBlob = []byte(`[
?? ??? ?{"Name": "Platypus", "Order": "Monotremata"},
?? ??? ?{"Name": "Quoll", ? ?"Order": "Dasyuromorphia"}
?? ?]`)
?? ?var animals []Animal
?? ?
?? ?err := json.Unmarshal(jsonBlob, &animals)
?? ?if err != nil {
?? ? ? ?fmt.Println("error:", err)
?? ?}
?? ?fmt.Printf("%+v", animals)
}
输出:
[{Name:Platypus Order:Monotremata} {Name:Quoll Order:Dasyuromorphia}]
简单进行修改,修改为:
package main
import (
?? ?"fmt"
?? ?"encoding/json"
)
type Animal struct {
? ? Name ?string
? ? Order string
}
func main() {
?? ?var jsonBlob = []byte(`{"Name": "Platypus", "Order": "Monotremata"}`)
?? ?var animals Animal
?? ?err := json.Unmarshal(jsonBlob, &animals)
?? ?if err != nil {
?? ? ? ?fmt.Println("error:", err)
?? ?}
?? ?fmt.Printf("%+v", animals)
}
输出:
{Name:Platypus Order:Monotremata}
还是之前的例子:
解析这样的一个json字符串:
{
? ? "first fruit":
? ? {
? ? ? ? "describe":"an apple",
? ? ? ? "icon":"appleIcon",
? ? ? ? "name":"apple"
? ? },
? ? "second fruit":
? ? {
? ? ? ? "describe":"an orange",
? ? ? ? "icon":"orangeIcon",
? ? ? ? "name":"orange"
? ? },
? ? "three fruit array":
? ? [
? ? ? ? "eat 0",
? ? ? ? "eat 1",
? ? ? ? "eat 2",
? ? ? ? "eat 3",
? ? ? ? "eat 4"
? ? ]
}
go代码:
package main
import (
?? ?"fmt"
?? ?"encoding/json"
)
type Fruit struct {
?? ?Describe string `json:"describe"`
?? ?Icon ? ? string `json:"icon"`
?? ?Name ? ? string `json:"name"`
}
type FruitGroup struct {
?? ?FirstFruit ?*Fruit `json:"first fruit"` ?//指针,指向引用对象;如果不用指针,只是值复制
?? ?SecondFruit *Fruit `json:"second fruit"` //指针,指向引用对象;如果不用指针,只是值复制
?? ?THreeFruitArray []string `json:"three fruit array"`
}
func main() {
?? ?var jsonBlob = []byte(`{
? ? "first fruit": {
? ? ? ? "describe": "an apple",
? ? ? ? "icon": "appleIcon",
? ? ? ? "name": "apple"
? ? },
? ? "second fruit": {
? ? ? ? "describe": "an orange",
? ? ? ? "icon": "appleIcon",
? ? ? ? "name": "orange"
? ? },
? ? "three fruit array": [
? ? ? ? "eat 0",
? ? ? ? "eat 1",
? ? ? ? "eat 2",
? ? ? ? "eat 3"
? ? ]}`)
?? ?var fruitGroup FruitGroup
?? ?
?? ?err := json.Unmarshal(jsonBlob, &fruitGroup)
?? ?if err != nil {
?? ? ? ?fmt.Println("error:", err)
?? ?}
?? ?fmt.Printf("%+v\n", fruitGroup)
?? ?fmt.Printf("%+v\n", fruitGroup.FirstFruit)
?? ?fmt.Printf("%+v\n", fruitGroup.SecondFruit)
}
运行结果:
{FirstFruit:0xc00006c5a0 SecondFruit:0xc00006c5d0 THreeFruitArray:[eat 0 eat 1 eat 2 eat 3]}
&{Describe:an apple Icon:appleIcon Name:apple}
&{Describe:an orange Icon:appleIcon Name:orange}
来源:https://blog.csdn.net/hp_cpp/article/details/101058472
0
投稿
猜你喜欢
- isdigit() isalpha()用于判断字符串的类型要求1统计某个字符串中的数字数量并输出,例如字符串为“adsf
- 本文实例讲述了python实现基于两张图片生成圆角图标效果的方法。分享给大家供大家参考。具体分析如下:使用pil的蒙版功能,将原图片和圆角图
- 1.scrapy基本了解Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘, 信息处理或存储历史数据
- python记录程序运行时间的三种方法 &nb
- 今天在刷leetcode的时候,对于179题返回最大数,用python2中的sorted(cmp)会很方便,但是在python3中这一参数被
- select语句完整语法:SELECT DISTINCT <select_list>FROM <left_table>
- 1. 背景:最近写了一篇CSDN博客需要上传gif图,发现大小超过了5M,无法上传。文件大小:本想自己找个免费的压缩工具,结果下载下来的工具
- 开发目标:实现小红帽所挂脚本的自动生成下图为生成的最终目标本项目是从json中读取角色场景等信息,因此为了更好地判断所用属性是否需要,设置为
- 本文实例讲述了Python读取properties配置文件操作。分享给大家供大家参考,具体如下:工作需要将Java项目的逻辑改为python
- 前言:有读者可能会一脸懵?啥是索引潜水?你给起的名字的吗?有没有索引蛙泳?这个名字还真不是我起的,今天要讲的知识点就叫索引潜水(Index
- 本文实例讲述了Python列表推导式与生成器表达式用法。分享给大家供大家参考,具体如下:和列表一样,列表推导式也采用方括号[]表示,并且用到
- 运行环境:eclipse+MySQL以前我们Java连接MySQL数据库都是一个数据库写一个类,类下面写好多方法,要是多个数据库,就要写多个
- 本文实例讲述了mysql外键基本功能与用法。分享给大家供大家参考,具体如下:本文内容:什么是外键外键的增加外键的修改和删除外键的约束模式首发
- -- 创建库CREATE TABLE `rate` ( `uname` VARCHAR (300), `object`
- 前言1 简介Kepler.gl作为一款强大的开源地理信息数据可视化工具,可以帮助我们轻松制作针对大规模矢量数据的可视化作品,从而辅助数据分析
- 利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456from fun
- 本文实例讲述了PHP自定义函数用法。分享给大家供大家参考,具体如下:Demo1.php<?php //标准函数,内置函数
- 一般情况下,导出超时可能都是以下三种情况:一、sql语句复杂,查询时间过长;二、处理查询后数据逻辑冗余;三、数据量过大导致响应超时。接下来分
- 01 ReplicaSet的架构 前面的文章中,我们说了ReplicaSet的基本概念和限制以及部署前的基本知识。
- 环境配置系统:Windows10版本:python 3.8Turtle扫盲1.绘图窗体的设置turtle.setup(width, heig