Go中Json解析

本文探讨了如何在Go中高效地解析JSON,避免使用反射,转而采用`easyjson`库。通过示例展示了如何利用`easyjson`生成的代码进行快速JSON序列化和反序列化,从而提高程序性能。同时,文章通过对比测试验证了`easyjson`的性能优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go内置json解析 配置文件解析

package json

import (
	"encoding/json"
	"fmt"
	"testing"
)

//远程过程调用 或者WebService 程序的配置也会使用JSON
//常用 使用反射的模式解析JSON 推荐使用easyJson
//利用FeildTag来表示对应的JSON值 高性能不建议使用,反射性能低
type BasicInfo struct {
	Name string `json:"name"`
	Age int `json:"age"`
}

type JobInfo struct {
	Skills []string `json:"skills"`
}

type Employee struct {
	BasicInfo BasicInfo `json:"basic_info"`
	JobInfo JobInfo	`json:"job_info"`
}

var jsonStr = `{
	"basic_info":{
		"name":"Mike",
		"age":30
	},
	"job_info":{
		"skills":["Java","Go","C"]
	}
}`

func TestEmbeddedJson(t *testing.T) {
	e := new(Employee)
	err := json.Unmarshal([]byte(jsonStr), e)
	if err != nil {
		t.Error(err)
	}
	fmt.Println(*e)
	if v,err := json.Marshal(e);err == nil{
		fmt.Println(string(v))
	} else {
		t.Error(err)
	}
}

不用反射的Json解析 Easy解析 网络

//安装 go get-u github.com/mailru/easyjson/...
//使用easyjson -all <结构定义>.go
//采用了代码生成而非反射

//使用UnmarshalJSON MarshalJSON 调用了
//使用benchmark 比较性能 go test -bench=.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值