2016-06-22 5 views
0

영수증의 유효성을 검사하려면 iOS에서 내 맞춤 서버로 보내야합니다.NSData를 사용하여 iOS에서 게시 한 Golang 서버에서 JSON을 읽으려면 어떻게해야합니까?

나는 나의 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 

그럼 내가 가기로 작성 내 서버에 배웅,하지만 난 다음 데이터를 읽는 방법을 모르겠어요.

은 이전 I는 (원시 형태가 아닌 JSON 구조)에만 데이터를 전송하고, 다음을 선적하기 전에 이와 같이베이스 (64)로 인코딩 된 문자열로 전환 :

data, _ := ioutil.ReadAll(request.Body) 
encodedString := base64.StdEncoding.EncodeToString(data) 

을 그런데 i를 JSON 구조 prod_id을 연결하는 링크는 string이며 영수증 데이터는 bytes이라고 가정합니다. 어떻게 그것을 읽을 수있는 JSON으로 추출한 다음 위와 같이 기본 64 인코딩 된 문자열로 변환합니까?

JSON이 어떤 구조를 사용하는지 잘 모르겠습니다.

답변

0

뭔가처럼 될 것이라고 :

type MyRequest struct { 
    Receipt string `json:"receipt"` 
    ProdID string `json:"prod_id"` 
} 

다음 디코딩 요청 : Foojson:"bar" 같은 아래로 이동 구조체

0

당신은 만들어야합니다 구조체와 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)  

본문 :

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) 
}