我正在尝试通过将收据从 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 结构),然后在发送之前将其转换为 base 64 编码字符串:data, _ := ioutil.ReadAll(request.Body)encodedString := base64.StdEncoding.EncodeToString(data)但是现在我将 a 链接到的 JSON 结构prod_id是 a string,以及收据数据,我假设是bytes. 如何将其提取为可读的 JSON,然后将其转换为如上所述的 base 64 编码字符串?我想我不确定 JSON 会采用什么结构。
2 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
您应该创建如下结构:
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)
}
白衣染霜花
TA贡献1796条经验 获得超10个赞
那将是这样的:
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)
json:"bar"in将FooJSON 结构与 Go 结构绑定
- 2 回答
- 0 关注
- 216 浏览
添加回答
举报
0/150
提交
取消
