绑定JSON结构
我正在尝试通过从iOS发送给我的自定义服务器来验证收据。
我有我的NSMutableURLRequest
并将其设置为:
let body: [String: AnyObject] = ["receipt": receipt, "prod_id": productID]
let optionalJson: NSData?
do {
optionalJson = try NSJSONSerialization.dataWithJSONObject(body, options: [])
} catch _ {
optionalJson = nil
}
guard let json = optionalJson else { return }
request.HTTPBody = json
然后,我将其发送到GO编写的服务器,但我不知道如何读取数据。
以前我仅发送数据(以原始形式而不是JSON结构),然后将其转变为基本64编码的字符串,然后将其运送到运输之前:
data, _ := ioutil.ReadAll(request.Body)
encodedString := base64.StdEncoding.EncodeToString(data)
但是,现在我的JSON结构将prod_id
与string
链接在一起,以及我认为是bytes
的收据数据。如何将其提取到可读的JSON中,然后将其转换为上述64个编码字符串?
我想我不确定JSON会采取什么结构。
,就像:
type Foo strut {
Bar string `json:"bar"`
}
// extract
data, err := ioutil.ReadAll(request.Body)
if err != nil {
return err
}
defer request.Body.Close()
v := &Foo{}
json.Unmarshal(data, v)
Foo
中的json:"bar"
用GO struct
您应该创建如下:
的结构type MyRequest struct {
Receipt string `json:"receipt"`
ProdID string `json:"prod_id"`
}
然后解码请求主体:
func handleMyRequest(rw http.ResponseWriter, req *http.Request) {
decoder := json.NewDecoder(req.Body)
var myReq MyRequest
err := decoder.Decode(&myReq)
if err != nil {
panic()
}
log.Println(myReq)
}