解編任意JSON 資料
問題:
問題:JSON 資料可以透過某種方式JSON編組嗎這允許它被分解為部分或部分?在這種情況下,資料的上半部定義了一個“代碼”,指示下半部的資料類型,該程式碼在結構之間可能有所不同。在 Go 中如何實現這一點?
答案:要解組任意JSON 數據,其中下半部分可能因結構體而異,您可以延遲解析下半部分,直到上半部分的“code”是已知的。
根據程式碼,建立適當結構類型的實例並將 Payload 解組到其中。
<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中文網其他相關文章!