gpt4 book ai didi

json - 如何为json文档中的现有数据添加新字段?

转载 作者:数据小太阳 更新时间:2023-10-29 03:23:39 25 4
gpt4 key购买 nike

我是 Golang 的初学者。我创建了一个 API,它可以很好地从 couchbase 读取数据,但我无法在 json 文档中写入新字段。写入新数据的代码如下:

func appendDataEndpoint(w http.ResponseWriter,req *http.Request){
var data map[string]interface{}
_ = json.NewDecoder(req.Body).Decode(&data)
fmt.Println(data)
params := mux.Vars(req)
str := params["id"]

message := message{ Student :data["student"].([]struct),//Here is another problem.How to write type of Student since it is referring to another structure."struct" is throwing type error.
College :data["college"].(string),
CollegeId: data["collegeid"].(string),
Hobbies :data["hobbies"].([]string),
Firstname: data["firstname"].(string),
Address: data["address"].(string),//New field to be inserted
Mobile: data["mobile"].(string),//New field to be inserted
}
fmt.Println(message.Address)
_,err:=bucket.Insert(str, message, 0)

if err!=nil{
fmt.Println("Error in inserting")
w.WriteHeader(401)
w.Write([]byte(err.Error()))
return
}
json.NewEncoder(w).Encode(message)
}

仍然有问题。现在更新的代码片段是:

    message:=message{
Student :data["student"].([]Student),//Error still exists here
College :data["college"].(string),
CollegeId :data["collegeid"].(string),
Hobbies :data["hobbies"].([]string),
Firstname :data["firstname"].(string),
Add: data["a"].(string),
Mo: data["m"].(string),
}
_,err:=bucket.Insert(str, message, 0)

错误是:

    panic serving [::1]:63648: interface conversion: interface {} is nil, not []main.Student

最佳答案

由于您提供的代码不完全可用,需要注意一些事项(为 message 结构提供代码怎么样?):

当收到来自客户端的请求时,您将其解码到一个 map[string]{}interface 对象中。从那里,您手动构造一个 message 对象。为什么不构造 message 对象而不必使用类型断言?您可以尝试这样做:

type Message struct {
Student []Student `json:"student"`
College String `json:"college"`
CollegeId String `json:"collegeid"`
Hobbies []String `json:"hobbies"`
FirstName String `json:"firstname"`
Address String `json:"address"`
Mobile String `json:"mobile"`
}

type Student struct {
Name String `json:"name"`
Qualifications []String `json:"qualifications"`
Email String `json:"email"`
}

var data Message
if err := json.NewDecoder(req.Body).Decode(&data); err != nil {
fmt.Println(err)
return
}

fmt.Println(data)

这也会处理您遇到困难的 student 结构。

我会推荐阅读 this article让您开始使用 JSON 和 Go。

关于json - 如何为json文档中的现有数据添加新字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48359486/

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