對于不確定的JSON內容,Go語言提供了一種快速、方便的解析方式。
首先,我們需要定義一個結構體,來存儲JSON中的鍵值對。由于不確定JSON中有哪些key和value,我們可以用interface{}類型來存儲value。
type data struct {
Key interface{}
Value interface{}
}
接下來,我們可以使用codec庫中的Unmarshal函數,將JSON字符串轉換成為map[string]interface{}類型,實現解析JSON的目的。
func parseJSON(jsonStr string) ([]data, error){
var result []data
var jsonMap map[string]interface{}
err := codec.NewDecoderBytes([]byte(jsonStr)).Decode(&jsonMap)
if err != nil {
return nil, err
}
for key, val := range jsonMap {
result = append(result, data{Key: key, Value: val})
}
return result, nil
}
在函數中,我們首先定義了一個data類型的切片result,并定義一個map[string]interface{}型的jsonMap,用于解析JSON。然后,我們使用codec庫中的NewDecoderBytes函數將JSON字符串解析為map[string]interface{}類型,再遍歷map中的所有鍵值對,將鍵名和值轉換成為data類型,存儲到result切片中。
最后,我們只需要調用該函數,并傳入JSON字符串,即可得到解析后的數據切片。
//測試代碼
func main(){
jsonStr := `{"name": "Jack", "age": 20, "isGraduated": false, "friends": ["Tom", "Lucy"]}`
result, err := parseJSON(jsonStr)
if err != nil {
panic(err)
}
fmt.Printf("%+v\n", result)
}
以上就是Go語言解析不確定JSON的方法,非常簡單并且實用。