如何在Struct Golang中压缩Json

 包裹问卷

导入(
“ encoding / json”

type Items [] Item

type CreateData结构{
Items [] Item
}

type Item结构{
ID在此处输入代码stringjson:“ id”必填项:“ true”
CompCd字符串json:“ compCd”必需:“ true”
OrgCd字符串json:“ orgCd”
QstnId字符串json:“ qstnId”必需:“ true”
QstnIdSeq字符串json:“ qstnIdSeq”: “ true”
CustId字符串json:“ custId”
AnsDts字符串json:“ ansDts”必填:“ true”
AnsRout字符串json:“ ansRout”必填:“ true”
QCd01 字符串json:“ qCd01”
QKey01字符串json:“ qKey01”
QStc01字符串json:“ qStc01”
QCat01字符串json:“ qCat01”

Pont01字符串json:“ pont01 “
PCat01字符串
json:” pCat01“
Comt01字符串
json:” comt01“
QCd02字符串
json:” qCd02“
QKey02字符串
json:” qKey02“
QStc02 strin g
json:“ qStc02”
QCat02字符串
json:“ qCat02”
Pont02字符串
json:“ pont02”
PCat02字符串
json:“ pCat02”
Comt02字符串json:“ comt02 “




QCd50字符串json:” qCd50“
QKey50字符串json:” qKey50“
QStc50字符串json:” qStc50“
QCat50字符串json :“ qCat50”
Pont50字符串json:“ pont50”
PCat50字符串json:“ pCat50”

Comt50字符串json:“ comt50”
}
</ code> </ pre>

我是新手。 我只是前几天才学习Go语言。.
我的问题:如何压缩此Item结构块。 如果我从QCd01写入QCd50,则此代码可以运行,但是太糟糕了!
对不起,我的英语不好。 </ p>
</ div>

展开原文

原文

package questionnaire

import (
    "encoding/json"
)

type Items []Item

type CreateData struct {
    Items []Item
}

type Item struct {
    Id        enter code herestring `json:"id"        required:"true"`
    CompCd    string `json:"compCd"    required:"true"`
    OrgCd     string `json:"orgCd"`
    QstnId    string `json:"qstnId"    required:"true"`
    QstnIdSeq string `json:"qstnIdSeq" required:"true"`
    CustId    string `json:"custId"`
    AnsDts    string `json:"ansDts"    required:"true"`
    AnsRout   string `json:"ansRout"   required:"true"`
    QCd01     string `json:"qCd01"`
    QKey01    string `json:"qKey01"`
    QStc01    string `json:"qStc01"`
    QCat01    string `json:"qCat01"`
    Pont01    string `json:"pont01"`
    PCat01    string `json:"pCat01"`
    Comt01    string `json:"comt01"`
    QCd02     string `json:"qCd02"`
    QKey02    string `json:"qKey02"`
    QStc02    string `json:"qStc02"`
    QCat02    string `json:"qCat02"`
    Pont02    string `json:"pont02"`
    PCat02    string `json:"pCat02"`
    Comt02    string `json:"comt02"`
    .
    .
    .
    QCd50     string `json:"qCd50"`
    QKey50    string `json:"qKey50"`
    QStc50    string `json:"qStc50"`
    QCat50    string `json:"qCat50"`
    Pont50    string `json:"pont50"`
    PCat50    string `json:"pCat50"`
    Comt50    string `json:"comt50"
}

I'm newbie. I just learn go language a few day before.. My problem: How to compact this Item struct block. If i write from QCd01 to QCd50 this code can run but so bad! Sorry I'm not good at English.

dousi7919
dousi7919 如何将json字符串转换为map[string]string?myMap:=make(map[string]string)myMap[“Id”]=“json:“id”必填:“true”â€〜myMap[“compCd”]=â€json:“compCd”必填::“true”–strJson:=[]byte({“items”:{“id”:“01”,“comCd”:“0001”})如果err:=json.Unmarshal(strJson,&myMap);err!=nil{fmt.Println(“ERROR”)}fmt.Println(myMap)//错误此代码可以正常工作吗?我试过了,但是行不通。
3 年多之前 回复
duanhuo7441
duanhuo7441 myMap:=make(map[string]string)结帐blog.golang.org/go-maps-in-action和gobyexample.com/maps
3 年多之前 回复
douyong4623
douyong4623 谢谢兄弟,但是如果我使用地图,它将变成什么样?
3 年多之前 回复
dtdfl62844
dtdfl62844 如果它们都是字符串,为什么不使用地图?
3 年多之前 回复

1个回答



我复制了代码并将其粘贴到您的注释中。 缺少结尾的} </ code>以完成json字符串。 另外,您需要一个将 items </ code>映射绑定到的结构。 这是一个工作中的游乐场链接。</ p>

编辑:我没有意识到会有多个“项目”,我应该以复数名称来假设。 这是解决此问题的更新的游乐场链接。</ p>

https ://play.golang.org/p/5T2C6KrVOD </ p>
</ div>

展开原文

原文

I copied and pasted the code in your comment. It was missing the ending } to finish the json string. Also, you need a struct to tie the items map to. Here is a working playground link.

EDIT: I didn't realize there would be more than one "items", which I should have assumed given the plural name. Here is an updated playground link that takes care of that.

https://play.golang.org/p/5T2C6KrVOD

dongyudun6465
dongyudun6465 您正在尝试做不属于JSON规范的内容。 JSON对象没有特定的顺序,实际上与规范中的字典或地图有关。 JSON数组是有序的,因此您的项目数组将是有序的,但是数组中的对象没有这种保证。 如果要强制执行订购,则需要手动进行。 即使是不同的语言,对JSON对象的排序也常常不同。 不能保证相同的JSON字符串输入==字符串输出。 在此处查看第一段之后的部分:json.org
3 年多之前 回复
doude5860
doude5860 我使用格式数据创建文件,当我搜索并从创建的文件中读取文件时,我希望输出数据具有相同的格式。 因为现有数据带来了这种格式,然后我希望它保持不变。 如果我使用切片对地图进行排序,则格式将被更改。
3 年多之前 回复
dougan4663
dougan4663 使用for键(值:= range mp {...)构建键值对的切片,然后使用排序库按键排序。 如果是JSON,为什么需要对其进行排序?
3 年多之前 回复
douzi1117
douzi1117 我明白了 非常感谢你。 当我搜索创建的数据时,我收到的地图没有排序,不像相同的输入数据。 我知道map [string] string没有排序。 如果是map [string] int或map [int] string,我可以对其进行排序,但是它是map [string] string。 如何排序map [string] string成为相同的输入数据?
3 年多之前 回复
douyi4991
douyi4991 我修改了“游乐场”链接,以考虑到“项目”可以包含多个项目这一事实。 我应该知道,但是您的示例中实际上没有一个以上的项目,因此我将它们隔开。
3 年多之前 回复
doumian3780
doumian3780 我更改了许多“项目”的myMap。 当我使用json.Unmashal(strJson,data)时,为什么数据变成map []。 我想按“ items”键然后按json.Mashal(data)循环写入文件。 游乐场:play.golang.org/p/1hglmTXxBZ
3 年多之前 回复
dongshanji3102
dongshanji3102 所需的任何内容,只要手动检查地图中是否存在即可。 我用这样的支票更新了我的游乐场链接。
3 年多之前 回复
douti6740
douti6740 谢谢您的回答,但是如果我想验证json:“ id”是否为必填项:“ true”,我该如何检查?
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问