如何使用特定字段作为键将结构转换为映射?

我正在尝试转换此结构


type news struct {

    Id       string `json:"id"`

    Title    string `json:"title"`

    Author   string `json:"author"`

    Date     string `json:"date"`

    Escraped string `json:"escraped"`

    Page     string `json:"page"`

    Body     string `json:"body"`

    Url      string `json:"url"`

}

对于以 Id 为键的地图,今天当我对这个结构进行编码时,我在函数中返回了以下 json


[

  {

    "id": "someId",

    "title": "something",

    "author": "something",

    "date": "something",

    "escraped": "something",

    "page": "https://something",

    "body": "something",

    "url": "https://something"

  }

]

但是现在我想更改它并使用 id 作为键,所以我想返回


[

  {

    "someId": {

      "title": "something",

      "author": "something",

      "date": "something",

      "escraped": "something",

      "page": "https://something",

      "body": "something",

      "url": "https://something"

    }

  }

]

我不太确定如何更改它以开始使用 ID 作为键而不是常规字段,我尝试创建另一个地图但失败了。


翻过高山走不出你
浏览 86回答 1
1回答

侃侃无极

我在这里做一些假设:您正在news其他地方使用该结构,并且字段必须保持原样您尝试编码的数据是从切片中读取的[]news您可以通过 3 个步骤完成此操作:使该Id字段可选使用omitempty使用定义和分配类型的map[string]news映射make()迭代您的数据以填充map更新结构type news struct {    Id       string `json:"id,omitempty"`    Title    string `json:"title"`    Author   string `json:"author"`    Date     string `json:"date"`    Escraped string `json:"escraped"`    Page     string `json:"page"`    Body     string `json:"body"`    Url      string `json:"url"`}创建地图result := make(map[string]news)填充地图// Transform a slice of news (called data) to a map (called result)for _, entry := range data {  result[entry.Id] = news{     Title: entry.Title,     Author: entry.Author,     Date: entry.Date,     Escraped: entry.Escraped,     Page: entry.Page,     Body: entry.Body,     Url: entry.Url,  }}// Encode the mapencoded, _ := json.Marshal(result)输出:{"someId":{"title":"something","author":"something","date":"something","escraped":"something","page":"https://something","body":"something","url":"https://something"}}请参阅此处的示例:https: //play.golang.org/p/8z6M8HqCVgv
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go