我正在尝试通过从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)
但现在我将prod_id
与string
相关联的JSON结构以及收据数据(我假设为bytes
)。如何将其提取为可读的JSON,然后将其转换为基本的64位编码字符串,如上所述?
我想我不确定JSON会采用什么结构。
答案 0 :(得分:0)
这就像是:
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"
中的Foo
将JSON结构与Go结构
答案 1 :(得分:0)
你应该创建如下的结构:
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)
}