MST

星途 面试题库

面试题:Go语言复杂映射(Map)与JSON数据转换处理

假设有一个嵌套结构的Go语言映射(Map),如map[string]interface{},其中interface{}可能是另一个map或者slice,编写代码将其转换为JSON字符串,并处理可能出现的类型错误。在反序列化时,也需要考虑如何正确地将JSON字符串恢复为原始的嵌套结构映射(Map)。
23.3万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    // 示例嵌套结构的Go语言映射
    nestedMap := map[string]interface{}{
        "key1": "value1",
        "key2": []interface{}{1, "two", map[string]interface{}{"subKey": "subValue"}},
        "key3": map[string]interface{}{
            "nestedKey": "nestedValue",
        },
    }

    // 转换为JSON字符串
    jsonData, err := json.MarshalIndent(nestedMap, "", "  ")
    if err != nil {
        fmt.Printf("JSON编码错误: %v\n", err)
        return
    }
    fmt.Println(string(jsonData))

    // 反序列化JSON字符串为原始嵌套结构映射
    var restoredMap map[string]interface{}
    err = json.Unmarshal(jsonData, &restoredMap)
    if err != nil {
        fmt.Printf("JSON解码错误: %v\n", err)
        return
    }
    fmt.Printf("恢复后的映射: %+v\n", restoredMap)
}

上述代码首先将嵌套结构的Go语言映射 map[string]interface{} 转换为JSON字符串,并处理了可能的编码错误。然后,从生成的JSON字符串反序列化回原始的嵌套结构映射,并处理可能的解码错误。

注意事项

  1. json.MarshalIndent 函数可以使生成的JSON字符串格式化输出,更易读。
  2. 在实际应用中,应该对可能出现的错误进行更全面的处理,如记录日志等。
  3. 反序列化时,json.Unmarshal 会根据JSON的结构来推断Go语言中的类型,所以 interface{} 类型在反序列化时会根据实际JSON内容正确恢复结构。