gpt4 book ai didi

json - 使用struct使用key:value作为标记名称创建JSON输出时出现问题

转载 作者:行者123 更新时间:2023-12-01 22:07:03 24 4
gpt4 key购买 nike

我想创建一个输出JSON,如下所示,

{
"Name": "John Smith",
"City": "London",
"Contact": [
{ "key": "StreetName", "value": "SomeName" },
{ "key": "PostalCode", "value": "SomeValue" }
],
}

我正在尝试使用以下代码实现这一目标,
package main

import (
"encoding/json"
"fmt"
"log"
)

type Person struct {
Name, City string
Contact ContactStruct
}

type ContactStruct struct {
Street, PostalCode map[string]string
}

func main() {
StreetData := make(map[string]string)
StreetData["key"] = "StreetName"
StreetData["value"] = "ABC Street"

PostalCodeData := make(map[string]string)
PostalCodeData["key"] = "PostalCode"
PostalCodeData["value"] = "12345"

jsonData := Person{
Name: "John Smith",
City: "London",
Contact: ContactStruct{
StreetData,
PostalCodeData,
},
}

finalJsonData, err := json.MarshalIndent(jsonData, " ", " ")
if err != nil {
log.Fatal(err)
}

fmt.Println(string(finalJsonData))
}

以下是使用以上代码生成的输出,
 {
"Name": "John Smith",
"City": "London",
"Contact": {
"Street": {
"key": "StreetName",
"value": "ABC Street"
},
"PostalCode": {
"key": "PostalCode",
"value": "12345"
}
}
}

问题:正如我们所看到的,将使用标记名 “Street” PostalCode 创建输出,因为我们正在使用struct值创建JSON。

我尝试探索在 map[string]string中使用 map[string]interface{}Person struct的各种选项。但这是行不通的。

根据问题开头显示的要求,是否有更好的实现可用于获取JSON输出。

先谢谢您的帮助。我最近开始在golang进行开发。

运行源在这里可用: https://play.golang.org/p/eIxDyWXfZ1C

最佳答案

也许你这样想


type Person struct {
Name, City string
Contact []ContactStruct
}

type ContactStruct struct {
Key string
Value string
}

func main() {

StreetData := ContactStruct{Key: "StreetName", Value: "ABC Street"}
PostalCodeData := ContactStruct{Key: "PostalCode", Value: "12345"}
jsonData := Person{
Name: "John Smith",
City: "London",
Contact: []ContactStruct{StreetData, PostalCodeData},
}
finalJsonData, err := json.MarshalIndent(jsonData, " ", " ")
if err != nil {
log.Fatal(err)
}
fmt.Println(string(finalJsonData))
}

关于json - 使用struct使用key:value作为标记名称创建JSON输出时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61078520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com