Json 如何使用url.Values为api请求生成深度嵌套的字段?

Json 如何使用url.Values为api请求生成深度嵌套的字段?,json,go,Json,Go,使用url包,可以创建一些数据以发送api请求,如so(): 我的问题是,如何发送嵌套的json值? 比如: form.Add("ln", {"nestedKey": nestedvalue}) 这可能吗?如何发送嵌套值? 更一般地说,如何在请求中发送json正文?以下是一种方法: package main import ( "bytes" "encoding/json" "net/h

使用url包,可以创建一些数据以发送api请求,如so():

我的问题是,如何发送嵌套的json值? 比如:

form.Add("ln", {"nestedKey": nestedvalue})
这可能吗?如何发送嵌套值? 更一般地说,如何在请求中发送json正文?

以下是一种方法:

package main

import (
   "bytes"
   "encoding/json"
   "net/http"
)

type m map[string]interface{}

func main() {
   form := m{
      "ip": "value2", "ua": "value3", "ln": m{"nestedKey": "nestedValue"},
   }
   b := new(bytes.Buffer)
   json.NewEncoder(b).Encode(form)
   http.Post("https://stackoverflow.com", "application/json", b)
}

您需要通过http的第3个参数发送请求正文。NewRequest。application/x-www-form-urlencoded没有嵌套密钥。您可以将该值添加到JSON[]字节,然后将该值添加到表单:
form.add(“ln”,string(jsonDoc))
package main

import (
   "bytes"
   "encoding/json"
   "net/http"
)

type m map[string]interface{}

func main() {
   form := m{
      "ip": "value2", "ua": "value3", "ln": m{"nestedKey": "nestedValue"},
   }
   b := new(bytes.Buffer)
   json.NewEncoder(b).Encode(form)
   http.Post("https://stackoverflow.com", "application/json", b)
}