editor php Strawberry memperkenalkan anda kepada teknik yang hebat, iaitu menyahkod/menyahmarshal struktur data JSON bersarang yang kompleks. Dalam aplikasi web moden, struktur data JSON digunakan secara meluas, tetapi apabila struktur data menjadi kompleks, ia menjadi sukar untuk menghuraikan dan mengekstrak maklumat yang diperlukan. Artikel ini akan berkongsi beberapa petua dan kaedah praktikal untuk membantu anda menghadapi cabaran ini dengan mudah. Sama ada anda seorang pemula atau pembangun berpengalaman, artikel ini akan memberikan anda pengetahuan yang berharga dan petua praktikal. Mari menyahkod dan membongkar struktur data JSON bersarang kompleks bersama-sama!
Saya cuba memproses beberapa data JSON yang dikembalikan daripada API. Walau bagaimanapun, ia bukan struktur yang mudah. Ia mempunyai sekumpulan kunci/nilai bersarang. Saya mahu membongkarnya menjadi struct Go.
Adakah cara mudah menggunakan go?
{ "http_buffered_trace": { "request": { "headers": [ { "key": ":authority", "value": "server.localhost:9443", "raw_value": "" }, { "key": ":path", "value": "/get_data", "raw_value": "" }, { "key": ":method", "value": "POST", "raw_value": "" }, { "key": ":scheme", "value": "https", "raw_value": "" }, { "key": "user-agent", "value": "curl/8.1.2", "raw_value": "" }, { "key": "content-length", "value": "1059", "raw_value": "" }, { "key": "accept", "value": "application/json", "raw_value": "" }, { "key": "authorization", "value": "auth data here ! ", "raw_value": "" }, { "key": "content-type", "value": "application/json", "raw_value": "" }, { "key": "x-forwarded-for", "value": "10.42.0.1", "raw_value": "" }, { "key": "x-forwarded-host", "value": "server.localhost:9443", "raw_value": "" }, { "key": "x-forwarded-port", "value": "9443", "raw_value": "" }, { "key": "x-forwarded-proto", "value": "https", "raw_value": "" }, { "key": "x-forwarded-server", "value": "traefik-64f55bb67d-6bbjl", "raw_value": "" }, { "key": "x-real-ip", "value": "10.42.0.1", "raw_value": "" }, { "key": "accept-encoding", "value": "gzip", "raw_value": "" }, { "key": "x-apache-internal", "value": "true", "raw_value": "" }, { "key": "x-request-id", "value": "995f0028-432e-499b-8bb9-c102834e150d", "raw_value": "" }, { "key": "x-apache-expected-rq-timeout-ms", "value": "15000", "raw_value": "" } ], "body": { "as_string": "Request body in here !", "truncated": false }, "trailers": [] }, "response": { "headers": [ { "key": ":status", "value": "200", "raw_value": "" }, { "key": "content-type", "value": "application/json; charset=UTF-8", "raw_value": "" }, { "key": "date", "value": "Wed, 01 Nov 2023 13:36:05 GMT", "raw_value": "" }, { "key": "x-apache-upstream-service-time", "value": "4", "raw_value": "" }, { "key": "server", "value": "envoy", "raw_value": "" } ], "body": { "as_string": "Response body in here!", "truncated": false }, "trailers": [] } } }
Ini cara mudah:
type Header struct { Key string `json:"key"` Value string `json:"value"` RawValue string `json:"raw_value"` } type Trailer = Header type Body struct { Truncated bool `json:"truncated"` AsString string `json:"as_string"` } type Request struct { Headers []Header `json:"headers"` Body Body `json:"body"` Trailers []Trailer `json:"trailers"` } type Response = Request type HttpBufferedTrace struct { HttpBufferedTrace struct { Request Request `json:"request"` Response Response `json:"response"` } `json:"http_buffered_trace"` } func main() { h := HttpBufferedTrace{} json.Unmarshal([]byte(jsonStr), &h) fmt.Println(h) }
https://www.php.cn/link/a98bf9c158d51c9757bd04eb9d2e16f7
Atas ialah kandungan terperinci Menyahkod/menyahmarshal struktur data JSON bersarang kompleks. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!