내 웹 소켓 서버는 JSON 데이터를 수신하고 마샬링 해제합니다. 이 데이터는 항상 키 / 값 쌍이있는 개체에 래핑됩니다. 키 문자열은 값 식별자 역할을하여 Go 서버에 어떤 종류의 값인지 알려줍니다. 어떤 유형의 값을 알면 올바른 유형의 구조체로 값을 정렬 해제하는 JSON으로 진행할 수 있습니다.
각 json- 객체에는 여러 키 / 값 쌍이 포함될 수 있습니다.
예제 JSON :
{
"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},
"say":"Hello"
}
이 "encoding/json"
작업을 수행하기 위해 패키지를 사용하는 쉬운 방법 이 있습니까?
package main
import (
"encoding/json"
"fmt"
)
// the struct for the value of a "sendMsg"-command
type sendMsg struct {
user string
msg string
}
// The type for the value of a "say"-command
type say string
func main(){
data := []byte(`{"sendMsg":{"user":"ANisus","msg":"Trying to send a message"},"say":"Hello"}`)
// This won't work because json.MapObject([]byte) doesn't exist
objmap, err := json.MapObject(data)
// This is what I wish the objmap to contain
//var objmap = map[string][]byte {
// "sendMsg": []byte(`{"user":"ANisus","msg":"Trying to send a message"}`),
// "say": []byte(`"hello"`),
//}
fmt.Printf("%v", objmap)
}
어떤 종류의 제안 / 도움을 주셔서 감사합니다!
RawMessage
. 정확히 내가 필요한 것. 에 관해서 는 문자열이 여전히 디코딩되지 않았기 때문에 (래핑 및 이스케이프 문자 등)say
실제로 여전히 .json.RawMessage
"
\n