golang에서 json을 읽는 방법

WBOY
풀어 주다: 2023-05-14 20:56:06
원래의
1604명이 탐색했습니다.

Go 언어는 강력한 형식의 프로그래밍 언어로, 네트워크 프로그래밍과 빅데이터 처리에 자주 사용됩니다. JSON은 경량 데이터 교환 형식으로 네트워크 전송에서 데이터 전송 및 수신에 널리 사용됩니다. JSON 데이터를 읽는 것은 Go 언어에서 매우 일반적인 작업입니다. 자, 이번 글에서는 Golang을 사용하여 JSON 데이터를 읽는 방법을 소개하겠습니다.

1. Golang에서 JSON 구조 사용

Golang에서는 구조를 사용하여 JSON 형식을 정의한 다음 json.Unmarshal() 함수를 사용하여 JSON 데이터를 구문 분석하고 JSON 배열을 읽을 수 있습니다. 다음 코드는 JSON 데이터에서 배열을 읽는 방법을 보여줍니다.

package main
import (
    "encoding/json"
    "fmt"
)
type Book struct {
    Title  string `json:"title"`
    Author string `json:"author"`
    Price  string `json:"price"`
}
func main() {
    jsonData := `[{"title":"Golang实战开发","author":"张三","price":"100元"},
                  {"title":"深入浅出Go","author":"李四","price":"80元"}]`
    var books []Book
    json.Unmarshal([]byte(jsonData), &books)
    for _, book := range books {
        fmt.Println("Book Title: ", book.Title)
        fmt.Println("Book Author: ", book.Author)
        fmt.Println("Book Price: ", book.Price)
    }
}
로그인 후 복사

위 코드에서는 먼저 각 책의 속성 정보를 나타내는 Book 구조를 정의합니다. 이 구조는 json 태그를 사용하여 JSON 필드를 바인딩하여 JSON 데이터를 올바르게 읽을 수 있도록 합니다.

다음으로 JSON 문자열을 Book 유형 슬라이스로 구문 분석하는 방법을 보여줍니다. 코드에서는 먼저 구문 분석된 데이터를 저장하기 위해 빈 조각을 만듭니다. 그런 다음 json.Unmarshal() 함수를 호출하여 JSON 데이터와 우리가 만든 빈 조각에 대한 포인터를 전달합니다. 이때 함수는 자동으로 JSON 문자열을 구문 분석하고 데이터를 Book 유형 슬라이스로 구문 분석합니다. json.Unmarshal()函数,并向其传递JSON数据和指向我们创建的空slice的指针。此时,该函数将会自动解析JSON字符串,并将数据解析为Book类型的slice。

最后,我们遍历刚刚解析出来的slice,并将每本书的属性信息打印到终端中。当我们运行该程序时,可以看到以下输出结果:

Book Title:  Golang实战开发
Book Author:  张三
Book Price:  100元
Book Title:  深入浅出Go
Book Author:  李四
Book Price:  80元
로그인 후 복사

二、使用Interface{}读取JSON数据

在某些场景下,我们并不知道JSON数据的具体结构,此时,我们可以使用interface{}类型的变量来处理JSON数据。下面的代码演示了如何使用interface{}类型来读取未知结构的JSON对象。

package main
import (
    "encoding/json"
    "fmt"
)
func main() {
    jsonData := `{"name":"张三","age":20}`
    var unknown map[string]interface{}
    json.Unmarshal([]byte(jsonData), &unknown)
    for key, value := range unknown {
        fmt.Printf("%v : %v
", key, value)
    }
}
로그인 후 복사

在上面的例子中,我们使用了一个interface{}类型的map来接收未知结构的JSON数据,这样就不需要提前定义结构体了。json.Unmarshal()

마지막으로 방금 구문 분석한 슬라이스를 반복하고 각 책의 속성 정보를 터미널에 인쇄합니다. 프로그램을 실행하면 다음 출력을 볼 수 있습니다.

name : 张三
age : 20
로그인 후 복사

2. 인터페이스{}를 사용하여 JSON 데이터를 읽습니다.

일부 시나리오에서는 JSON 데이터의 구체적인 구조를 알 수 없습니다. JSON 데이터를 처리하기 위한 인터페이스{} 유형의 변수입니다. 다음 코드는 인터페이스{} 유형을 사용하여 구조를 알 수 없는 JSON 객체를 읽는 방법을 보여줍니다.

package main
import (
    "encoding/json"
    "fmt"
)
func main() {
    jsonData := `{"name":"张三","age":20}`
    var unknown interface{}
    json.Unmarshal([]byte(jsonData), &unknown)
    m := unknown.(map[string]interface{})
    fmt.Println(m["name"], m["age"])
}
로그인 후 복사

위 예시에서는 인터페이스{} 유형의 맵을 사용하여 구조를 알 수 없는 JSON 데이터를 수신하므로 구조를 미리 정의할 필요가 없습니다. json.Unmarshal() 함수는 JSON 문자열을 map[string]interface{} 유형 변수로 구문 분석하고 for 루프를 사용하여 변수를 순회하고 해당 키와 값을 각각 출력합니다. 프로그램을 실행하면 다음과 같은 출력을 볼 수 있습니다.

张三 20
로그인 후 복사
3. 비구조적 유형을 사용하여 JSON 데이터를 읽습니다.

또한 작은 JSON 개체를 다루거나 데이터의 일부만 읽어야 하는 경우 먼저 구조를 정의하는 대신 값 변수를 정의한 다음 JSON 문자열을 변수로 직접 구문 분석하기만 하면 됩니다. 다음 코드는 비구조 유형을 사용하여 JSON 객체를 읽는 방법을 보여줍니다.

rrreee

위 코드에서는 인터페이스{} 유형의 변수를 사용하여 JSON 데이터를 수신하고 유형 어설션을 사용하여 이를 map[string]interface{} 유형으로 변환합니다. 그런 다음 지도에서 "이름"과 "나이" 필드를 제거하고 출력을 인쇄했습니다. 🎜🎜프로그램을 실행하면 다음과 같은 출력을 볼 수 있습니다. 🎜rrreee🎜Summary🎜🎜Golang에서 JSON 데이터를 읽는 것은 매우 편리합니다. 구조를 사용하여 JSON 형식을 정의하면 프로그램을 더 명확하게 만들 수 있습니다. 인터페이스 유형의 변수를 사용하면 구조를 알 수 없는 JSON 데이터를 수신할 수 있는 반면, 비구조 유형을 사용하면 코드를 단순화하고 프로그램의 실행 효율성을 높일 수 있습니다. 물론 JSON 데이터를 읽는 위의 세 가지 방법에는 장점과 단점이 있으며 다양한 시나리오에 따라 해당 방법을 유연하게 선택할 수 있습니다. 🎜

위 내용은 golang에서 json을 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!