Go 反序列化 JSON 中类型不确定的字段
package main
import (
"encoding/json"
"fmt"
)
// 假设我们有一个包含不同类型字段的JSON结构
// 这些字段的具体类型在解析之前是未知的
type DynamicField struct {
Type string
Value interface{}
}
func main() {
// 示例JSON数据,包含不同类型的字段
jsonData := []byte(`{"Type":"string","Value":"Hello, World!"}`)
jsonDataInt := []byte(`{"Type":"int","Value":42}`)
jsonDataBool := []byte(`{"Type":"bool","Value":true}`)
var field DynamicField
// 反序列化字符串字段
if err := json.Unmarshal(jsonData, &field); err != nil {
panic(err)
}
fmt.Printf("String field: %v\n", field.Value)
// 反序列化整数字段
if err := json.Unmarshal(jsonDataInt, &field); err != nil {
panic(err)
}
fmt.Printf("Int field: %v\n", field.Value)
// 反序列化布尔字段
if err := json.Unmarshal(jsonDataBool, &field); err != nil {
panic(err)
}
fmt.Printf("Bool field: %v\n", field.Value)
}
这段代码演示了如何处理JSON中类型不定的字段。我们定义了一个结构体DynamicField
,其中的Value
字段是空接口类型,可以存储任何类型的值。通过反序列化,我们可以根据Type
字段将JSON数据中的值映射到适当的Go类型上。这种方法可以用于处理不规则或者动态类型的数据。
评论已关闭