我想将一个JSON对象传递给GOLANG中的一个函数,所以我如何定义我的参数,如果我可以将我的参数定义为字符串,那就好了。下面是一个样本
func getDetailedNameSpace(authentication string,id string) string{
var jsonStr = []byte(string);
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
req, _ := http.NewRequest("PUT", "https://"+authentication.endPoint+"/object/namespaces/"+id, bytes.NewBuffer(jsonStr))
req.Header.Add("X-Sds-Auth-Token",authentication.authtoken)
req.Header.Add("Accept","application/json")
res,err:=client.Do(req)
body, err := ioutil.ReadAll(res.Body)
if err!=nil{
fmt.Printf("%s",err)
}
return string(body);
}
另外我必须验证params,就像我们在下面的python中一样
def getDetailedNameSpace(authentication,id=None):
assert authentication!=None,"Authentication Required"
答案 0 :(得分:1)
我假设您正在尝试将JSON作为PUT
请求的正文。在这种情况下,您只想使用赋值。请求对象有一个类型为io.ReadCloser
的字段。
req.Header.Add("Accept","application/json")
req.Body = bytes.NewBufferString(MyJsonAsAString)
res,err:=client.Do(req)
还有一些其他方法,如http.Post
,它们将body作为参数,但在这种情况下,Do
方法将Request
对象作为参数,并且具有Body
。