>백엔드 개발 >Golang >golang 슬라이스를 json으로

golang 슬라이스를 json으로

WBOY
WBOY원래의
2023-05-10 10:05:361236검색

Golang의 지속적인 개발로 Slice는 Golang에서 매우 중요한 데이터 유형 중 하나가 되었으며, 유연성과 사용 편의성은 칭찬할 만합니다. 슬라이스는 내부적으로 배열을 사용하여 구현되는 참조 유형입니다. 슬라이스는 요소를 동적으로 추가하고 줄일 수 있으며 배열보다 사용하기가 더 편리합니다. JSON(JavaScript Object Notation)은 가독성이 좋고 구문 분석이 쉬운 경량 데이터 교환 형식입니다. Golang에서는 표준 라이브러리 "encoding/json"을 통해 슬라이스를 JSON 형식으로 변환할 수 있습니다.

이 글에서는 Golang의 슬라이스를 JSON 형식으로 변환하는 방법을 자세히 살펴보겠습니다.

슬라이스를 JSON으로 변환하는 방법

Golang에서 슬라이스를 JSON으로 변환하는 방법은 매우 간단합니다. 표준 라이브러리 "encoding/json"에 있는 Marshal 함수만 사용하면 됩니다. Marshal 함수는 인터페이스{} 유형의 매개변수를 수신하고 바이트 배열과 오류를 반환합니다. 변환하기 전에 슬라이스의 데이터 유형을 구조 유형으로 정의해야 합니다.

다음은 슬라이스를 JSON 형식으로 변환하는 방법을 보여주는 간단한 샘플 코드입니다.

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    persons := []Person{{"Alice", 25}, {"Bob", 31}, {"Charlie", 26}, {"David", 23}}

    jsonBytes, err := json.Marshal(persons)
    if err != nil {
        fmt.Println("转换出错:", err)
    }

    jsonStr := string(jsonBytes)
    fmt.Println(jsonStr)
}

위 코드를 사용하면 다음과 같은 출력을 얻을 수 있습니다.

[{"Name":"Alice","Age":25},{"Name":"Bob","Age":31},{"Name":"Charlie","Age":26},{"Name":"David","Age":23}]

출력에서 볼 수 있듯이 변환된 JSON 형식 데이터 , 각 요소는 구조로 구성된 JSON 객체이며, 구조의 각 필드는 JSON 객체의 키-값 쌍으로 변환됩니다.

Object to JSON

슬라이싱 외에도 구조, 맵 등과 같은 Golang의 다른 데이터 유형을 Marshal 함수를 통해 JSON 형식으로 변환할 수 있습니다. 위 예의 슬라이스를 표시할 구조로 변경할 수 있습니다.

package main

import (
    "encoding/json"
    "fmt"
)

type Person struct {
    Name string
    Age  int
}

func main() {
    person := Person{
        Name: "Alice",
        Age:  25,
    }

    jsonBytes, err := json.Marshal(person)
    if err != nil {
        fmt.Println("转换出错:", err)
    }

    jsonStr := string(jsonBytes)
    fmt.Println(jsonStr)
}

위 코드를 통해 다음과 같은 출력 결과를 얻을 수 있습니다.

{"Name":"Alice","Age":25}

출력 결과에서 볼 수 있듯이 변환된 JSON 형식 데이터도 구조로 구성된 JSON 객체로, 구조의 각 필드는 JSON 객체의 키-값 쌍으로 변환됩니다.

특수 문자 이스케이프

JSON 개체에서 특정 문자에는 큰따옴표("), 슬래시(/), 줄바꿈(
) 등과 같은 특수 이스케이프가 필요합니다. 이러한 문자가 원래 문자열에 있는 경우 특수 문자가 필요합니다.

Golang에서는 특수 문자를 이스케이프하기 위해 표준 라이브러리 "encoding/json"에 Escape 함수가 제공됩니다.

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    str := ""Hello, Golang!" / 
"

    jsonBytes, err := json.Marshal(str)
    if err != nil {
        fmt.Println("转换出错:", err)
    }

    jsonStr := string(jsonBytes)
    fmt.Println(jsonStr)

    jsonStr = json.EscapeString(str)
    fmt.Println(jsonStr)
}

위 코드를 통해 다음과 같은 출력을 얻을 수 있습니다.

""Hello, Golang!" / 
"
""Hello, Golang!" / \n"

출력에서 ​​볼 수 있듯이 원래 문자열에서는 EscapeString 함수를 사용하여 큰따옴표와 슬래시가 이스케이프됩니다.

결론

이 글에서는 Golang에서 슬라이스를 JSON 형식으로 변환하는 방법을 소개하고, 다른 데이터 유형(예: 구조 및 맵)의 변환 방법도 설명합니다. 이 기사가 Golang의 JSON 형식 변환에 도움이 되기를 바랍니다.

위 내용은 golang 슬라이스를 json으로의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.