golang解析json格式数据

前端之家收集整理的这篇文章主要介绍了golang解析json格式数据前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

json简介

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。

  • 常见样式1
{
    "id": 1,"name": "bill" }

这个json格式数据中,包含了2个字段,一个是id字段,值是1;第二个字段是name字段,其值是bill。这是一种基础的json格式数据。

  • 常见样式2
[
    {
        "id": 1234,"name": "jack" },{
        "id": 4567,"name": "tom" }
]

这中形式的json可以用来表述数组。可以将数据库中的多行转换成数组形式的json。每一行一个大括号,行与行之间用逗号分隔。整个数据用中括号括起来。这样用来表述一个json格式的数组。

  • 常见样式3
{
    "version": "v1.0.1","data": [ { "id": 999,"name": "lucy" },{ "id": 888,"name": "Jordan" } ],"jj": "god" }

json可以表达丰富多彩的数据结构。json格式通常可以理解为key/value结构。value值又可以表示成字符串,数字,也可以表示成子json对象。当value成json对象时,实现了嵌套json的数据结构。

下边来使用golang解析嵌套的json格式数据。示例如下:

package main

import (
    "encoding/json"
    "fmt"
)

type data struct {
    Id  string
    Val string
}

type user struct {
    Id   string
    Name string
    Age  string
}
type tjson struct {
    D       data
    Version string
    U       user
}

func main() {
    js := tjson{
        D:       data{Id: "text",Val: "hello world"},Version: "0.1",U:       user{Id: "bill",Name: "bill gates",Age: "18"},}
    ojs,err := json.Marshal(js)
    fmt.Println(string(ojs),err)
    var mjs = `{"D":{"Id":"text","Val":"hello world"},"Version":"0.1","U":{"Id":"bill","Name":"bill gates","Age":"18"}}`
    var ret tjson
    err = json.Unmarshal([]byte(mjs),&ret)
    fmt.Println(ret,ret.D.Id,ret.U.Name,err)
}

演示结果如下:

{
    "D": { "Id": "text","Val": "hello world" },"Version": "0.1","U": { "Id": "bill","Name": "bill gates","Age": "18" } }

{{text hello world} 0.1 {bill bill gates 18}} text bill gates

原文链接:https://www.f2er.com/go/189100.html

猜你在找的Go相关文章