为了账号安全,请及时绑定邮箱和手机立即绑定

Golang改变json.RawMessage中的值

Golang改变json.RawMessage中的值

Go
跃然一笑 2022-10-31 15:50:04
我有 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    }
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

除了@mkopriva 的评论(我认为这是更可取的方式),您可以尝试使用映射而不是结构(如果结构不适用于您)。


package main


import (

    "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


查看完整回答
反对 回复 2022-10-31
  • 1 回答
  • 0 关注
  • 308 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号