Golang改变json.RawMessage中的值

我有 json.RawMessage 并且为了得到我需要向 API 发送请求。我的问题是我需要更改该消息我只需要更改一个字段,所以我的问题是最有效的方法是什么


json.RawMessage

{

        "make": "VW",

        "model": "ARTEON",

        "version": "2.0 TDI",

        "year_min": 2017,

        "power_ps": 200,

        "fuel": "diesel",

        "body_type": "sedan",

        "currency": "EUR",

        "co2_emission": 130

    }

所以例如我想将燃料类型从柴油改为汽油


expected output

{

        "make": "VW",

        "model": "ARTEON",

        "version": "2.0 TDI",

        "year_min": 2017,

        "power_ps": 200,

        "fuel": "gasoline",

        "body_type": "sedan",

        "currency": "EUR",

        "co2_emission": 130

    }


跃然一笑
浏览 309回答 1
1回答

RISEBY

除了@mkopriva 的评论(我认为这是更可取的方式),您可以尝试使用映射而不是结构(如果结构不适用于您)。package mainimport (    "encoding/json"    "fmt")var rm = json.RawMessage(`{        "make": "VW",        "model": "ARTEON",        "version": "2.0 TDI",        "year_min": 2017,        "power_ps": 200,        "fuel": "diesel",        "body_type": "sedan",        "currency": "EUR",        "co2_emission": 130    }`)func main() {    var objmap map[string]interface{}        err := json.Unmarshal(rm, &objmap)    if err != nil {        panic(err)    }        objmap["fuel"] = "gasoline"        result, err := json.Marshal(objmap)    if err != nil {        panic(err)    }        fmt.Println(string(result))}https://go.dev/play/p/nue-SA-LGVf
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go