如何让golang 把变量解析为json,并输出为文件。

Python052

如何让golang 把变量解析为json,并输出为文件。,第1张

1. 不管golang从json文件读取数据,还是写数据到json配置文件,都需要encoding/json包,如下:import (

"encoding/json"

)

2. 编码JSON,输出数据到json文件,有方法如下:

json.Marshal(xxx) 和 json.MarshalIndent(c, "", " ") ,两个方法的区别是,MarshalIndent(c, "", " ")方法按照json格式 缩进,也就是美化了的 可读性很高的 带缩进的 Json数据。所以只要是json格式数据,当然用第二个方法啦。

3. 具体代码如下:

c := make(map[string]interface{})

c["name"] = "Gopher"

c["title"] = "programmer"

c["contact"] = map[string]interface{}{

"home": "415.333.3333",

"cell": "415.555.5555",

Go解析json遇到了大数字、不定格式等特殊情况,在此做了一个整理。

选择哪个要视输入而定。

json.Unmarshal 操作对象是一个 []byte ,也就意味着被处理的JSON要全部加载到内存。如果有一个加载完的JSON使用 json.Unmarshal 会快一些。

json.Decoder 操作的是一个 stream ,或者其他实现了 io.Reader 接口的类型。意味着可以在接收或传输的同时对其进行解析。当处理一组较大数据时无需重新copy整个JSON到内存中。

最好的选择办法如下:

默认情况下,go对json解析过程中遇到的数字都会当做float64处理。如果数字过大会有精度丢失。可以使用json.Number来处理。

输出结果:

使用 json.Decoder 只能操作 io.Reader 类型的JSON数据。

有时候遇到字段不定的JSON,需要一边判断一边解析。如:

可以先统一解组到interface{} 然后判断关键字段再进行后续处理。

结果

使用RawMessage便于分步Unmarshal

原文链接

一、JSON解析到结构体

在介绍这部分之前先简要介绍一下Json语法

JSON 语法是 JavaScript 语法的子集。JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中

数据由逗号分隔

括号保存对象

中括号保存数组

1.JSON名称/值对

2.JSON值

可以是:

JSON数据

JSON 数字可以是整型或者浮点型

JSON对象

JSON 对象在大括号({})中书写:

对象可以包含多个名称/值对:

JSON数组

JSON 数组在中括号中书写:

数组可包含多个对象:

JSON布尔值

二、JSON转map

输出结果:

三、生成JSON

本文来自php中文网的 golang教程 栏目: https://www.php.cn/be/go/