将JSON参数传递给GOLANG中的函数

时间:2015-09-24 20:33:42

标签: json go

我想将一个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"

1 个答案:

答案 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