如何将一个结构体复制到具有相同字段的嵌套结构体中?

huangapple go评论105阅读模式
英文:

How to copy one struct to nested struct having same fields

问题

我需要使用golang自动创建故事JIRA。为此,我可以将所需的嵌套JSON映射到golang,并且我能够创建故事。现在,我想尝试使用简单的JSON输入,并将其复制到具有相同字段的嵌套结构中。

例如,
我有以下输入JSON:

  1. {
  2. "project": "cdo",
  3. "summary": "sample test story",
  4. "issueType": "Story",
  5. "userStory" : "this is jira",
  6. "assignee": "pradnya.shinde",
  7. "teamOwner" : "TEAM-59",
  8. "productOwner": "alex.anguiano"
  9. }

我已经将上述JSON映射到golang结构中,如下所示:

  1. type InputJson struct {
  2. Project string `json:"project"`
  3. Summary string `json:"summary"`
  4. Issuetype string `json:"issueType"`
  5. UserStory string `json:"userStory"`
  6. Assignee string `json:"assignee"`
  7. TeamOwner string `json:"teamOwner"`
  8. ProductOwner string `json:"productOwner"`
  9. }

我想将此结构复制到另一个嵌套结构中。
嵌套结构如下所示:

  1. type JiraCreateStory struct {
  2. Fields struct {
  3. Project struct {
  4. Key string
  5. }
  6. Summary string
  7. Issuetype struct {
  8. Name string
  9. }
  10. UserStory string
  11. Assignee struct {
  12. Name string
  13. }
  14. ProductOwner struct {
  15. Name string
  16. }
  17. TeamOwner string
  18. }
  19. }

有人可以建议我如何用简单的代码进行复制吗?

英文:

I need to automate creation of story JIRA using golang. For this I can mapped required nested json to golang and I am able to create story also. Now I want to try with simple input as json and copy to nested struct having same fields.

Ex.
I have input json like

  1. {
  2. "project": "cdo",
  3. "summary": "sample test story",
  4. "issueType": "Story",
  5. "userStory" : "this is jira",
  6. "assignee": "pradnya.shinde",
  7. "teamOwner" : "TEAM-59",
  8. "productOwner": "alex.anguiano"
  9. }

I have mapped above json in golang struct like

  1. type InputJson struct {
  2. Project string `json:"project"`
  3. Summary string `json:"summary"`
  4. Issuetype string `json:"issueType"`
  5. UserStory string `json:"userStory"`
  6. Assignee string `json:"assignee"`
  7. TeamOwner string `json:"teamOwner"`
  8. ProductOwner string `json:"productOwner"`
  9. }

I want to copy this struct to another nested struct.
Nested struct is like

  1. type JiraCreateStory struct {
  2. Fields struct {
  3. Project struct {
  4. Key string
  5. }
  6. Summary string
  7. Issuetype struct {
  8. Name string
  9. }
  10. UserStory string
  11. Assignee struct {
  12. Name string
  13. }
  14. ProductOwner struct {
  15. Name string
  16. }
  17. TeamOwner string
  18. }
  19. }

Can anyone suggest how can I copy it with simple code?

答案1

得分: 0

声明所有结构体的类型:

  1. type JiraCreateStory struct {
  2. Fields Fields
  3. }
  4. type Fields struct {
  5. Project Project
  6. Summary string
  7. Issuetype Issuetype
  8. UserStory string
  9. Assignee Assignee
  10. ProductOwner ProductOwner
  11. }
  12. type Project struct {
  13. Key string
  14. }
  15. type Issuetype struct {
  16. Name string
  17. }
  18. type Assignee struct {
  19. Name string
  20. }
  21. type ProductOwner struct {
  22. Name string
  23. }

使用复合字面量创建一个JiraCreateStory

  1. x := JiraCreateStory{Fields: Fields{
  2. Project: Project{Key: src.Project},
  3. Summary: src.Summary,
  4. Issuetype: Issuetype{Name: src.Issuetype},
  5. UserStory: src.UserStory,
  6. Assignee: Assignee{Name: src.Assignee},
  7. ProductOwner: ProductOwner{Name: src.ProductOwner},
  8. }}
英文:

Declare types for all structs:

  1. type JiraCreateStory struct {
  2. Fields Fields
  3. }
  4. type Fields struct {
  5. Project Project
  6. Summary string
  7. Issuetype Issuetype
  8. UserStory string
  9. Assignee Assignee
  10. ProductOwner ProductOwner
  11. }
  12. type Project struct { Key string }
  13. type Issuetype struct { Name string }
  14. type Assignee struct { Name string }
  15. type ProductOwner struct { Name string }

Create a JiraCreateStory using a composite literal:

  1. x := JiraCreateStory{Fields: Fields{
  2. Project: Project{Key: src.Project},
  3. Summary: src.Summary,
  4. Issuetype: Issuetype{Name: src.Issuetype},
  5. UserStory: src.UserStory,
  6. Assignee: Assignee{Name: src.Assignee},
  7. ProductOwner: ProductOwner{Name: src.ProductOwner},
  8. }}

huangapple
  • 本文由 发表于 2022年10月6日 14:36:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/73969516.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定