首页 > 文章列表 > golang如何将字符串映射到 json 对象的多种类型?

golang如何将字符串映射到 json 对象的多种类型?

golang
442 2023-07-10

问题内容

golang如何将字符串映射到 json 对象的多种类型?

正确答案

在Go语言中,可以使用encoding/json包将字符串映射到JSON对象的多种类型。以下是一些常见的用法示例:

1、将字符串映射到map[string]interface{}类型的JSON对象:

import "encoding/json"

func main() {
    jsonString := `{"name": "John", "age": 30}`
    
    var data map[string]interface{}
    err := json.Unmarshal([]byte(jsonString), &data)
    if err != nil {
        // 处理解析错误
    }
    
    // 使用解析后的数据
    name := data["name"].(string)
    age := data["age"].(float64)
    
    // 打印结果
    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
}

2、将字符串映射到自定义的结构体类型的JSON对象:

import "encoding/json"

type Person struct {
    Name string `json:"name"`
    Age  int    `json:"age"`
}

func main() {
    jsonString := `{"name": "John", "age": 30}`
    
    var person Person
    err := json.Unmarshal([]byte(jsonString), &person)
    if err != nil {
        // 处理解析错误
    }
    
    // 使用解析后的数据
    name := person.Name
    age := person.Age
    
    // 打印结果
    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
}

3、将字符串映射到interface{}类型的JSON对象,然后根据字段类型进行类型断言:

import "encoding/json"

func main() {
    jsonString := `{"name": "John", "age": 30}`
    
    var data interface{}
    err := json.Unmarshal([]byte(jsonString), &data)
    if err != nil {
        // 处理解析错误
    }
    
    // 使用解析后的数据
    jsonData := data.(map[string]interface{})
    name := jsonData["name"].(string)
    age := jsonData["age"].(float64)
    
    // 打印结果
    fmt.Println("Name:", name)
    fmt.Println("Age:", age)
}

上述示例展示了不同的方式将字符串映射到不同类型的JSON对象。