我有map[string][]byte格式的数据,其中key是该 struct 的json字段标记,值是字节片.

请考虑以下示例:

type Tweet struct {
    UserId int `json:"user_id"`
    Message string `json:"message"`
}
data = {
"user_id":<some bytes>,
"message":<some bytes>
}

var t Tweet

如何将相应的字段数据解组到Tweet struct 中,该 struct 可以包含任何类型的字段,即切片/映射/定制类型/指针类型?我是否必须逐个映射每个字段的数据,或者是否也有任何通用的方法?

我try 将整个数据编组并将其解编组回 struct 类型,但似乎它在内部修改了实际数据,并且不起作用.

bytes, err := json.Marshal(data)
var t Tweet
err = json.Unmarshal(bytes,&t)

推荐答案

我想你没有提到你的错误,但下面的内容对我很有效.你可以这样试一试.

    package main

import (
    "encoding/json"
    "fmt"
)

type Tweet struct {
    UserId  int    `json:"user_id"`
    Message string `json:"message"`
}

func main() {
    // Example data: map of field tags to JSON-encoded byte slices
    data := map[string]json.RawMessage{
        "user_id": []byte(`123`),             // Encoded as a JSON number
        "message": []byte(`"Hello, world!"`), // Encoded as a JSON string
    }

    // Convert map to JSON
    jsonData, err := json.Marshal(data)
    if err != nil {
        fmt.Println("Error marshalling map to JSON:", err)
        return
    }

    // Unmarshal JSON into Tweet struct
    var t Tweet
    if err := json.Unmarshal(jsonData, &t); err != nil {
        fmt.Println("Error unmarshalling JSON:", err)
        return
    }

    // Output the result
    fmt.Printf("Unmarshalled: %+v\n", t)

    // Marshal the Tweet struct back into JSON
    marshalledData, err := json.Marshal(t)
    if err != nil {
        fmt.Println("Error marshalling Tweet struct to JSON:", err)
        return
    }

    // Output the marshalled JSON
    fmt.Printf("Marshalled: %s\n", marshalledData)
}

Json相关问答推荐

中间初始化的Jolt配置

如何在改装Android中将ResponseBody转换为JSONObject

Jolt Spec 跳过数组中的第一个元素

Ansible - 将文件内容添加到字典中

具有 (RegEx) 模式的 json-schema 中的枚举

如何在 Android Studio 中将 List 字段作为空列表[]返回?

如何限制resolveJsonModule的范围?

如何从 rails 中的 respond_to 方法生成 json?

获取json中某个键的索引

一起使用 Argparse 和 Json

如何从 mysql 数据库构建 JSON 数组

反序列化大型 json 对象的 JsonMaxLength 异常

JSON 语法错误:'unexpected number' 或 'JSON.parse: expected ',' or '}' after property value in object'

在 Postgres 中向 JSON 对象添加元素

将 JSON 对象推送到 localStorage 中的数组

有必要清理 JSON 吗?

如何将有向无环图 (DAG) 存储为 JSON?

PostgreSQL 中的 JSON 模式验证?

可以在 SharedPreferences 中保存 JSON 数组吗?

JSON 模式 - 如果对象*不*包含特定属性则有效