json - 如果我想在 2 个不同的 JSON 中解析对象,如何避免重复对象

标签 json parsing go

我有一个我收到的对象:

{
    "operation": "ACC00000001", 
    "prm": "23597250350000", 
    "conso_prod": "Conso",
    "index_name": "BASE",
    "index_value": "123456",
    "timestamp": "2019-08-20T22:00:00Z"
 }

我使用的对象在一个公共(public)库中,因此它被多个服务共享:

常用度量:

type Measure struct {
    Timestamp     time.Time
    Delta         float64
    Redistributed float64
    IsProd        bool
    IndexValue    uint32
    IndexName     string 
    Source        string 
}

和仪表:

type Meter struct {
    ID          string
    Operation string
    Unit        string
    Timestep    time.Duration
    Measures    []Measure
}

但是由于标签不匹配,我必须创建另一个对象 MeasureFromJSON,它是根据我收到的 json 创建的。

type MeasureFromJSON struct {
    Operation   string `json:"operation" binding:"required"`
    Prm         string `json:"prm"`
    Conso_prod  string `json:"conso_prod"`
    Index_name  string `json:"index_name"`
    Index_value string `json:"index_value"`
    Timestamp   string `json:"timestamp"`
}

问题是我不喜欢对同一个实体使用 2 个模型,只是因为我在公共(public)对象中没有 JSON 标签。有没有办法使用常见的模型(meter.Measure)?

最佳答案

Thing is I don't like to use 2 models for the same entity, just because I have no JSON labels in common object

首先我有一个疑问,同一个实体怎么会返回两组不同的数据,大部分字段都不一样呢?

如果那些不同的字段仍然来自单个实体,那么您可能可以组合这些字段并将其存储到单个 common.Measure 中。

type Measure struct {
    Timestamp     time.Time `json:"timestamp"`
    Delta         float64
    Redistributed float64
    IsProd        bool
    IndexValue    string `json:"index_value"`
    IndexName     string `json:"index_name"` 
    Source        string 
    ConsoProd     string  `json:"conso_prod"` 
    Prm           string  `json:"prm"` 
    Operation     string  `json:"operation"` 
}

关于json - 如果我想在 2 个不同的 JSON 中解析对象,如何避免重复对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58058437/

相关文章:

android - 获取 JSON 并对其进行操作

jquery - 从通过 ajax 请求传递的 jquery 对象获取特定值

mysql - 基于json select查询更新多个表列值

go - 如何将类型为其他结构的 map 添加到 map ?

Google Cloud HTTP(S) 负载平衡器不会取消与后端的连接

json - 读取JSON文件并将其保存在SAS数据集中

c - 解析源代码

.net - 是否有任何为 .NET 编写的 REXX PARSE 实现?

jquery - 解析jquery中的json问题

http - 在 Go 中挂载双 http 路由器