source

Go 구조를 JSON으로 변환하는 중

gigabyte 2023. 3. 25. 11:21
반응형

Go 구조를 JSON으로 변환하는 중

Go 구조를 JSON으로 변환하려고 합니다.json하지만 내가 받는 건{}분명 당연한 일이지만 잘 모르겠어요.

package main

import (
    "fmt"
    "encoding/json"
)

type User struct {
    name string
}

func main() {
    user := &User{name:"Frank"}
    b, err := json.Marshal(user)
    if err != nil {
        fmt.Printf("Error: %s", err)
        return;
    }
    fmt.Println(string(b))
}

실행하려고 하면 다음과 같은 메시지가 나타납니다.

$ 6g test.go && 6l -o test test.6 && ./test 
{}

내보내야 합니다.User.name이 필드를 통해json패키지로 확인할 수 있습니다.이름을 변경합니다.name까지 수비하다.Name.

package main

import (
    "fmt"
    "encoding/json"
)

type User struct {
    Name string
}

func main() {
    user := &User{Name: "Frank"}
    b, err := json.Marshal(user)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(b))
}

출력:

{"Name":"Frank"}

관련 문제:

구조를 JSON으로 변환하는 데 어려움을 겪었고, Golang에서 응답으로 보냈고, 나중에 Ajax를 통해 JavaScript에서 같은 내용을 포착했습니다.

많은 시간을 낭비했으니까 여기에 해결책을 게시하는 거야

이동 중:

// web server

type Foo struct {
    Number int    `json:"number"`
    Title  string `json:"title"`
}

foo_marshalled, err := json.Marshal(Foo{Number: 1, Title: "test"})
fmt.Fprint(w, string(foo_marshalled)) // write response to ResponseWriter (w)

JavaScript의 경우:

// web call & receive in "data", thru Ajax/ other

var Foo = JSON.parse(data);
console.log("number: " + Foo.number);
console.log("title: " + Foo.title);

흥미로운 질문입니다. 새로운 바둑 버전을 사용하는 것은 매우 쉽습니다.다음 작업을 수행해야 합니다.

package main

import (
    "fmt"
    "encoding/json"
)

type User struct {
    Name string `json:"name"`
}

func main() {
    user := &User{name:"Frank"}
    b, err := json.Marshal(user)
    if err != nil {
        fmt.Printf("Error: %s", err)
        return;
    }
    fmt.Println(string(b))
}

이 이름을 Name으로 변경합니다.

독자적인 커스텀 MarshelJ를 정의할 수 있습니다.SON과 UnmarshalJSON 메서드 및 의도적인 제어:

package main

import (
    "fmt"
    "encoding/json"
)

type User struct {
    name string
}

func (u *User) MarshalJSON() ([]byte, error) {
    return json.Marshal(&struct {
        Name     string `json:"name"`
    }{
        Name:     "customized" + u.name,
    })
}

func main() {
    user := &User{name: "Frank"}
    b, err := json.Marshal(user)
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(string(b))
}

구조값은 JSON 개체로 인코딩됩니다.내보낸 각 구조 필드는 다음과 같은 경우를 제외하고 객체의 구성원이 됩니다.

  • 필드의 태그는 "-" 또는
  • 필드가 비어 있고 태그가 "빈" 옵션을 지정합니다.

빈 값은 false, 0, 제로 포인터 또는 인터페이스 값 및 길이0의 배열, 슬라이스, 맵 또는 문자열입니다.객체의 기본 키 문자열은 구조 필드 이름이지만 구조 필드의 태그 값으로 지정할 수 있습니다.구조 필드의 태그 값에 있는 "json" 키는 키 이름이며, 그 뒤에 옵션인 쉼표와 옵션이 있습니다.

언급URL : https://stackoverflow.com/questions/8270816/converting-go-struct-to-json

반응형