Json包

作者: 菩提树下参悟 | 来源:发表于2022-07-12 00:07 被阅读0次

encoding/json

encoding/json是官方提供的标准json, 实现RFC 7159中定义的JSON编码和解码。使用的时候需要预定义struct,原理是通过reflectioninterface来完成工作, 性能低。

常用的接口:
  • func Marshal(v interface{}) ([]byte, error) 生成JSON
    把对象转换为JSON:
        • 布尔型转换为 JSON 后仍是布尔型 , 如true -> true
        • 浮点型和整数型转换后为JSON里面的常规数字,如 1.23 -> 1.23
        • 字符串将以UTF-8编码转化输出为Unicode字符集的字符串,特殊字符比如<将会被转义为\u003c
        • 数组和切片被转换为JSON 里面的数组,[]byte类会被转换为base64编码后的字符串,slice的零值被转换为null
        • 结构体会转化为JSON对象,并且只有结构体里边以大写字母开头的可被导出的字段才会被转化输出,而这些可导出的字段会作为JSON对象的字符串索引
        • 转化一个map 类型的数据结构时,该数据的类型必须是 map[string]T(T 可以是encoding/json 包支持的任意数据类型)
  • func Unmarshal(data []byte, v interface{}) error 解析JSON到struct
    把 JSON 转换回对象的方法:
    这个函数会把传入的 data 作为一个JSON来进行解析,解析后的数据存储在参数 v 中。这个参数 v 也是任意类型的参数(但一定是一个类型的指针),原因是我们在是以此函数进行JSON 解析的时候,这个函数不知道这个传入参数的具体类型,所以它需要接收所有的类型。
package main

import (
    "encoding/json"
    "fmt"
)

//结构体与json

//1.序列化:把Go语言中的结构体变量--》json格式的字符串
//2.反序列化:jso格式的字符串 --》Go语言中识别的结构体变量

type person struct {
    Name string `json:"name" db:"name" ini:"name"`//结构体字段的可见性,json包,db数据库,ini文件
    Age  int    `json:"age"`
}

func main() {
    p1 := person{
        Name: "小林",
        Age:  90,
    }
    //序列化
    b, err := json.Marshal(p1)
    if err != nil {
        fmt.Printf("marshal failed,err:%v", err)
    }
    fmt.Println(string(b))
    fmt.Printf("%#v\n", string(b))
    //反序列化
    str := `{"name":"理想","age":18}`
    var p2 person
    json.Unmarshal([]byte(str), &p2) // 传指针是为了能在json.Unmarshal内部修改p2 的值
    fmt.Printf("%#v\n", p2)
}

json格式的在线工具
json

相关文章

  • golang解析json数据

    golang官方包encoding/json包解析json数据太复杂,这里使用简单的json解析包simplejs...

  • jfinal json包

    jfinal框架的json包与log包的设计模式一样: json包:封装了不同json实现的统一用法 1、Json...

  • java学习笔记:json串解析

    1、所需jar包 需要导入json的jar包和json所依赖的jar包至builtPath路径下 json-lib...

  • Golang-基础包

    math包 strconv包 json包 time包

  • Json学习

    json的返回与解析 添加json依赖包以及处理json为bean的包 返回json格式数据到前端(返回信息均为键...

  • Json包

    encoding/json encoding/json是官方提供的标准json, 实现RFC 7159中定义的JS...

  • Golang标准库——encoding(3)

    json pem xml json json包实现了json对象的编解码,参见RFC 4627[http://to...

  • golang标准库中的encoding/json包

    1、什么是JSON?2、go标准库json包的内容?3、开发中常用json操作? 一、什么是JSON?JSON简单...

  • Golang JSON的序列化和反序列化

    go提供了一个包encode/json,方便我们操作json。 结构体转json json转结构体

  • Fast Json 笔

    0. Jar 包 下载地址 1.Json → 对象 2.对象 → Json 3.Json → Map 4.Json...

网友评论

    本文标题:Json包

    本文链接:https://www.haomeiwen.com/subject/aabybrtx.html