猿问

为JSON编码器/解码器“发布”了不同的结构属性

我需要通过JSON导出一些大型结构,并取回JSON字符串以仅更新其某些属性。


让我们有以下结构:


type House struct {

    Name   string  `json:"name"`

    Rooms  int     `json:"rooms_count"`

    Owner  *Owner  `json:"-"`

}

使用进行编码encoding/json将产生JSON字符串,例如


{"name":"some name", "rooms_count":5}

我现在得到以下JSON字符串:


{"name":"some other name", "rooms_count":7, Owner:{something...}}

用户想要更改每个属性。Owner不允许,因为它没有被导出。但是我只想允许更改rooms_count。有什么说法可以将某些属性与一起导出Encoder,但不能由导出Decoder?必须手动编写所有这些检查会非常不愉快。


皈依舞
浏览 108回答 2
2回答

偶然的你

在您的具体情况下,只需解组到新结构并执行acurrentStruct.Rooms = newStruct.Rooms就是您想要的。对于这种类型的自定义编组,还没有一种完全简单的方法。最好的选择是两个相同的结构,在不同的场合使用不同的标签,并进行一些反射以在它们之间进行转换。
随时随地看视频慕课网APP

相关分类

Java
我要回答