>백엔드 개발 >Golang >golang이 JSON을 생성하고 JSON을 구문 분석하는 방법

golang이 JSON을 생성하고 JSON을 구문 분석하는 방법

藏色散人
藏色散人앞으로
2020-11-10 14:43:513792검색

다음 튜토리얼 칼럼인 golang에서는 JSON을 생성하고 JSON을 구문 분석하는 golang을 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!

golang이 JSON을 생성하고 JSON을 구문 분석하는 방법

1. JSON 구문 분석 구조

이 부분을 소개하기 전에 Json 구문을 간략하게 소개하겠습니다

JSON 구문은 JavaScript 구문의 하위 집합입니다. JSON 구문은 JavaScript 개체 표기법 구문의 하위 집합입니다.

데이터는 이름/값 쌍입니다.
데이터는 쉼표로 구분됩니다.
중괄호는 개체를 저장합니다.
대괄호는 배열을 저장합니다.
1.JSON 이름/값 쌍

"name" : "value"

2.JSON 값
가능:

숫자(정수 또는 부동 소수점)
문자열(큰따옴표 안)
논리값(true 또는 false)
배열(대괄호 안)
개체(중괄호 안)
null

  1. JSON 데이터
    JSON 숫자는 정수 또는 부동 소수점 유형일 수 있습니다.

{ "age":30 }

  1. JSON 개체
    JSON 개체는 중괄호({})로 작성됩니다.
    개체는 여러 이름/값 쌍을 포함할 수 있습니다. :
{
    "name": "runoob",
    "alexa": 10000,
    "sites": {
        "site1": "www.runoob.com",
        "site2": "m.runoob.com",
        "site3": "c.runoob.com"
    }
}
  1. JSON array
    JSON 배열은 대괄호로 작성됩니다.
    배열은 여러 객체를 포함할 수 있습니다:
{
    "sites": [
        {
            "name": "菜鸟教程",
            "url": "www.runoob.com"
        },
        {
            "name": "google",
            "url": "www.google.com"
        },
        {
            "name": "微博",
            "url": "www.weibo.com"
        }
    ]
}
  1. JSON Boolean

{ "flag":true }

  1. json NULLon { "Runoob": NULL}

json 구조로 구문 분석됨

//JSON解析到结构体
package main
import (
    "encoding/json"
    "fmt"
    "os"
)
type Server struct {
    ServerName string
    ServerIP   string
}
type Serverslice struct {
    Servers []Server
}
func main() {
    var s Serverslice
    str := `{"servers":
   [{"serverName":"Guangzhou_Base","serverIP":"127.0.0.1"},
   {"serverName":"Beijing_Base","serverIP":"127.0.0.2"}]}`
    err:=json.Unmarshal([]byte(str), &s)
    if err!=nil{
        fmt.Println(err)
    }
    fmt.Println(s)
    fmt.Println(s.Servers[0].ServerName)
}
E

2, JSON to map

package main
 
 
import (
    "fmt"
    "encoding/json"
)
 
func main() {
 
    b := []byte(`{"IP": "127.0.0.1", "name": "SKY"}`)
 
    m := make(map[string]string)
 
    err := json.Unmarshal(b, &m)
    if err != nil {
 
        fmt.Println("Umarshal failed:", err)
        return
    }
 
 
    fmt.Println("m:", m)
 
    for k,v :=range m {
        fmt.Println(k, ":", v)
    }
}
출력 결과:

m: map [ip: 127.0.0 .0.1 name:SKY]

name : SKY
IP : 127.0.0.1



3 JSON을 생성합니다

package main
import (
    "encoding/json"
    "fmt"
)
type Server struct {
    ServerName string `json:"serverName,string"`
    ServerIP   string `json:"serverIP,omitempty"`
}
type Serverslice struct {
    Servers []Server `json:"servers"`
}
func main() {
    var s Serverslice
    s.Servers = append(s.Servers, Server{ServerName: "Guangzhou_Base", ServerIP: "127.0.0.1"})
    s.Servers = append(s.Servers, Server{ServerName: "Beijing_Base", ServerIP: "127.0.02"})
    b, err := json.Marshal(s)
    if err != nil {
        fmt.Println("JSON ERR:", err)
    }
    fmt.Println(string(b))
}
.

위 내용은 golang이 JSON을 생성하고 JSON을 구문 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제