解编任意 JSON 数据
问题:
JSON 数据可以通过某种方式编组吗这允许它被分解为部分或部分?在这种情况下,数据的上半部分定义了一个“代码”,指示下半部分的数据类型,该代码在结构之间可能有所不同。在 Go 中如何实现这一点?
答案:
要解组任意 JSON 数据,其中下半部分可能因结构体而异,您可以延迟解析下半部分,直到上半部分的“code”是已知的。
实现:
示例代码:
<code class="go">package main import ( "encoding/json" "fmt" ) type Message struct { Code int Payload json.RawMessage } type Range struct { Start int End int } type User struct { ID int Pass int } func MyUnmarshall(m []byte) { var message Message var payload interface{} json.Unmarshal(m, &message) switch message.Code { case 3: payload = new(User) case 4: payload = new(Range) } json.Unmarshal(message.Payload, payload) fmt.Printf("\n%v%+v", message.Code, payload) } func main() { json := []byte(`{"Code": 4, "Payload": {"Start": 1, "End": 10}}`) MyUnmarshall(json) json = []byte(`{"Code": 3, "Payload": {"ID": 1, "Pass": 1234}}`) MyUnmarshall(json) }</code>
以上是如何根据“代码”解组具有不同结构的任意 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!