golang json 처리 struct에서 구성원을 내보내지 않았습니다
이것은 기술적인 문제로 인해 일어난 것이다. 골롱의 구조체 안의 구성원의 이름이 소문자로 시작하면 다른 가방은 접근할 수 없다. 즉, json은 우리의 구조체에서 소문자로 시작하는 구성원에게 접근할 수 없다.
이거는 두 가지 방법으로 해결할 수 있어요.
1. struct의 멤버는 대문자로 시작해서 tag를 넣는다
2. json을 실현한다.Marshaler 커넥터
첫 번째 방법은 흔한데 여기는 자세히 펼치지 않아요.
두 번째 방법은 다음과 같다.
http://play.golang.org/p/AiTwUOWkiT
package main
import "fmt"
import "encoding/json"
func main() {
var s S
s.a = 5
s.b[0] = 3.123
s.b[1] = 111.11
s.b[2] = 1234.123
s.c = "hello"
s.d[0] = 0x55
j, _ := json.Marshal(s)
fmt.Println(string(j))
}
type S struct {
a int
b [4]float32
c string
d [12]byte
}
func (this S) MarshalJSON() ([]byte, error) {
return json.Marshal(map[string]interface{}{
"a": this.a,
"b": this.b,
"c": this.c,
"d": this.d,
})
}
출력:
{"a":5,"b":[3.123,111.11,1234.123,0],"c":"hello","d":[85,0,0,0,0,0,0,0,0,0,0,0]}
즉 구조체가MarshalJSON()([]byte,error) 함수를 실현하면 됩니다. 이 함수에서 내보내고 싶은 구성원을 내보내면 됩니다.
이렇게 하면 json을 정상적으로 사용할 수 있다.Marshal 같은 함수예요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.