当我调用一个端点点低于两个json时。
作为回应,我需要发送一个json响应。
在Json1中,value
为空,需要从Json2获取值。
我无法获取属性 LayoutSections
JSON:1
{
"Name": "VisitDoctorLayout",
"Kind": "Visit",
"layoutsections": [
{
"label": "AccountInformation",
"style": "TwoColumnsTopToBottom",
"layoutcolumns": [
{
"layoutitems": [
{
"behavior": "edit",
"name": "firstname",
"type": "string",
"label": "first Name",
"value": ""
},
{
"behavior": "Required",
"name": "lastname",
"type": "string",
"label": "Last Name",
"value": ""
}
]
}
]
}
]
}
JSON:2
{"firstname":"ABC",
"lastname":"EFZ"
}
我的sruct就像下面的
type Layout struct {
ID string `json:"ID"`
Name string `json:"name"`
Kind string `json:"kind"`
Namespace string `json:"namespace"`
LayoutSections []LayoutSections `json:"layoutsections"`
}
type LayoutSections struct {
Label string `json:"label"`
Style string `json:"style"`
LayoutColumns []LayoutColumns `json:"layoutcolumns"`
}
type LayoutColumns struct {
LayoutItems []LayoutItems `json:"layoutitems"`
}
type LayoutItems struct {
Behavior string `json:"behavior"`
Name string `json:"name"`
Type string `json:"type"`
Label string `json:"label"`
Value string `json:"value"`
}
答案 0 :(得分:0)
我不确定如果我的请求是正确的,但这里是我"映射"从Json2
到Json1
的数据。
// Added this for the inserter json (Json2)
type Inserter struct {
FirstName string `json:"firstname"`
LastName string `json:"lastname"`
}
var dat Layout
var ins Inserter
func main() {
if err := json.Unmarshal(json1, &dat); err != nil {
panic(err)
}
if err := json.Unmarshal(json2, &ins); err != nil {
panic(err)
}
for sk, sec := range dat.LayoutSections {
for ck, col := range sec.LayoutColumns {
for ik, item := range col.LayoutItems {
itemPointer := &dat.LayoutSections[sk].LayoutColumns[ck].LayoutItems[ik]
switch item.Name {
case "firstname":
// Setting the FirstName value:
itemPointer.Value = ins.FirstName
case "lastname":
// Setting the LastName value:
itemPointer.Value = ins.LastName
}
}
}
}
}
基本上你可以深入研究:
Layout
> LayoutSections
> LayoutColumns
> LayoutItems
然后检查您要更改的项目,在我们的案例中firstname
& lastname
。最后只需将Value
设置为Inserter
json(Json2)所包含的内容。
这是 Example 的所有细节。