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