如何在使用 NSData 从 iOS 发布的 Golang 服务器上读取 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_idstring链接在一起,以及我认为是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

绑定JSON结构

您应该创建如下:

的结构
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)
}

最新更新