将部分数据字节解组到自定义结构中

王林
풀어 주다: 2024-02-12 18:20:06
앞으로
369명이 탐색했습니다.

将部分数据字节解组到自定义结构中

问题内容

我有 map[string][]byte 形式的数据,其中 key 是该结构体的 json 字段标记,value 是字节切片。

考虑这个例子:

type Tweet struct {
    UserId int `json:"user_id"`
    Message string `json:"message"`
}
로그인 후 복사
data = {
"user_id":,
"message":
}
로그인 후 복사

var t Tweet

如何将相应的字段数据解组到 Tweet 结构中,该结构可以包含任何类型的字段,即切片/地图/自定义类型/指针类型?我是否必须一一单独映射每个字段的数据,或者还有什么通用的方法吗?

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

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)
}
로그인 후 복사

위 내용은 将部分数据字节解组到自定义结构中의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:stackoverflow.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!