Go生成json、解析json和多维json数组解析

Stella981
• 阅读 1401

go生成和解析json结构是按结构体模式解析的,所以结构体类型一定要多练习熟悉。

完整代码(可以运行):

// +build ignore
package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string
    Age  int
}

type Family struct {
    Persons []Person
}

func main() {
    // 根据结构体生成json
    manJson := Person{
        Name: "Elinx",
        Age:  26,
    }
    man, _ := json.Marshal(manJson)
    fmt.Println(string(man))

    // 解析json到结构体
    jsonStr := []byte(`{"Name":"Elinx","Age":26}`)
    var man2 Person
    json.Unmarshal(jsonStr, &man2)
    fmt.Println(man2)

    // 解析json数组到切片(数组)
    jsonArrStr := []byte(`[{"Name":"Elinx","Age":26}, {"Name":"Twinkle","Age":21}]`)
    var jsonSlice []map[string]interface{}

    json.Unmarshal(jsonArrStr, &jsonSlice)
    fmt.Println(jsonSlice)

    // 解析多维数组
    var f Family

    // 模拟传输的Json数据
    familyJSON := `{"Persons": [{"Name":"Elinx","Age":26}, {"Name":"Twinkle","Age":21}] }`
    
    fmt.Println("======================")

    // 解析字符串为Json
    json.Unmarshal([]byte(familyJSON), &f)
    // 直接输出并不会展示全部层级,原因待考究
    fmt.Println(f)
    // 从新生成json字符串查看真实结构
    jsons, _ := json.Marshal(f)

    fmt.Println(string(jsons))
}

直接解析单键json

可以使用直接json转map结构

// 直接解析json单key结构,不使用结构体
uploadJSON := `{"xxxx": "test","zzzz": "1111111"}`
var jsonSlice2 map[string]interface{}
json.Unmarshal([]byte(uploadJSON), &jsonSlice2)
fmt.Println(jsonSlice2)

参考文献

1.go json字符串转切片
2.golang生成JSON及解析JSON

点赞
收藏
评论区
推荐文章
kenx kenx
2年前
SpringBoot 默认json解析器详解和字段序列化自定义
前言在我们开发项目API接口的时候,一些没有数据的字段会默认返回NULL,数字类型也会是NULL,这个时候前端希望字符串能够统一返回空字符,数字默认返回0,那我们就需要自定义json序列化处理SpringBoot默认的json解析方案我们知道在springboot中有默认的json解析器,SpringBoot中默认使用的Json解析技术框架是ja
Stella981 Stella981
2年前
Go的json解析:Marshal与Unmarshal
简介Json(JavascriptObjectNanotation)是一种数据交换格式,常用于前后端数据传输。任意一端将数据转换成json字符串,另一端再将该字符串解析成相应的数据结构,如string类型,strcut对象等。go语言本身为我们提供了json的工具包”encoding/json”。更多的使用方式,可以参考:https:
Stella981 Stella981
2年前
C# JToken类的使用,实现解析动态json数据、遍历、查找
在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。为了解决动态解析json数据,微软有个Newtonsoft.Json封装类十分好用,里面的JToken直接实现ling查询。将json字符串解析为JToken,
Stella981 Stella981
2年前
Golang
golang官方为我们提供了标准的json解析库–encoding/json,大部分情况下,使用它已经够用了。不过这个解析包有个很大的问题–性能。它不够快,如果我们开发高性能、高并发的网络服务就无法满足,这时就需要高性能的json解析库,目前性能比较高的有jsoniterator和easyjson。现在我们需要引进一个高性能的json解析库
Wesley13 Wesley13
2年前
JSON教程
JSON教程JSON:JavaScript对象表示法(JavaScriptObjectNotation)。JSON是存储和交换文本信息的语法。类似XML。JSON比XML更小、更快,更易解析。每一章中用到的实例{    "star_male":    {
Stella981 Stella981
2年前
Python and JSON
什么是json:JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA2623rdEditionDecember1999的一个子集。JSON采用完全独立于语言的
Wesley13 Wesley13
2年前
JSON
JSON(JavaScriptObjectNotation,js对象表示法)  是存储和交换文本信息的语法,类似 XMLJSON的文件类型是“.json”优点:    比XML更小、更快,更容易解析      是轻量级的文本数据交换格式   结构清晰简洁,易于阅读和编写,也易于机器的解析和生成,可以有效的提
Stella981 Stella981
2年前
Spring boot返回JSON类型响应及Content
一、背景服务器软件用Springboot开发,API调用的响应消息格式为JSON。对端调用接口后无法解析响应。抓包看Response的Body部分确实是正确的JSON格式字符串。二、问题分析继续分析日志发现对端收到的响应消息类型是text/plain?!对端解析先判断消息类型,这是无法按照JSON格式解析的。三、问题解决1\
Stella981 Stella981
2年前
Golang 入门系列(九) 如何读取YAML,JSON,INI等配置文件
实际项目中,读取相关的系统配置文件是很常见的事情。今天就来说一说,Golang是如何读取YAML,JSON,INI等配置文件的。1\.json使用JSON应该比较熟悉,它是一种轻量级的数据交换格式。层次结构简洁清晰,易于阅读和编写,同时也易于机器解析和生成。  1.创建conf.json:{
小万哥 小万哥
6个月前
Python JSON 使用指南:解析和转换数据
JSON是一种用于存储和交换数据的语法。JSON是文本,使用JavaScript对象表示法编写。Python中的JSONPython有一个内置的json包,可用于处理JSON数据。示例:导入json模块:pythonimportjson解析JSON从JSO