在沒有已知結構的情況下解組嵌套JSON
當遇到沒有定義結構的嵌套JSON 資料時,嵌套有多種方法可以緩解解組中的挑戰。
避免重複解組
通常建議盡量減少解組操作。考慮實作快取機制來儲存未編組的物件以供日後使用,並避免重複的編組。然而,在某些情況下,可能需要多次解組,尤其是在處理不同類型的巢狀結構時。
確定解組的正確結構
方法1:解組到map[string]interface{}
將json.RawMessage解組到map[string]interface{}。這允許檢查嵌套結構以識別類型,並隨後識別要解組到的正確結構。
範例:
<code class="go">var objMap map[string]interface{} json.Unmarshal(rawMessage, &objMap)</code>
方法2 :正規表示式符合
使用正規資料表達式來符合JSON中的類型字串。一旦知道類型,請使用反射或類型開關將其解組到相應的結構中。
範例:
<code class="go">type Regex *regexp.Regexp // Split the JSON data into key-value pairs type KeyValue struct { Key string Value string } // Regex for extracting the type var typeRE = Regex(regexp.MustCompile(`(?m)^.*"type": "(.+)".*$`)) // Unmarshal the raw message and extract the type func getType(rawMessage []byte) (string, error) { var data KeyValue err := json.Unmarshal(rawMessage, &data) if err != nil { return "", err } matches := typeRE.FindStringSubmatch(data.Value) return matches[1], nil }</code>
使用複製或常規表達式方法
A:複製和解組
方法 B:正規表示式和解組
以上是在不知道其結構的情況下如何解組嵌套的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!