SORU
28 Mart 2013, PERŞEMBE


İşleme JSON İstek mesaja Git

Ben aşağıda, hangi görünüyor inanılmaz hacky ve düşünüyordum kendimi o Gitmek ve daha iyi tasarlanmış kütüphaneler daha bu, ama bulamıyorum bir örnek işleme Gidip bir POST isteği JSON veri. Tüm form Mesajlar.

Aşağıda örnek bir istek: curl -X POST -d "{\"test\": \"that\"}" http://localhost:8082/test

Ve burada gömülü günlükleri ile kodu:

package main

import (
    "encoding/json"
    "log"
    "net/http"
)

type test_struct struct {
    Test string
}

func test(rw http.ResponseWriter, req *http.Request) {
    req.ParseForm()
    log.Println(req.Form)
    //LOG: map[{"test": "that"}:[]]
    var t test_struct
    for key, _ := range req.Form {
        log.Println(key)
        //LOG: {"test": "that"}
        err := json.Unmarshal([]byte(key), &t)
        if err != nil {
            log.Println(err.Error())
        }
    }
    log.Println(t.Test)
    //LOG: that
}

func main() {
    http.HandleFunc("/test", test)
    log.Fatal(http.ListenAndServe(":8082", nil))
}

Daha iyi bir yolu olmalı, değil mi? Sadece en iyi yöntem ne olabilir bulma konusunda kafam allak bullak oldu.

(Git Diğerleri bulabilmesi için de arama motorları için Golang, ve burada sözü olarak bilinir.)

CEVAP
28 Mart 2013, PERŞEMBE


json.Unmarshal yerine json.Decoder kullanın lütfen.

func test(rw http.ResponseWriter, req *http.Request) {
    decoder := json.NewDecoder(req.Body)
    var t test_struct   
    err := decoder.Decode(&t)
    if err != nil {
        panic()
    }
    log.Println(t.Test)
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ipsy Makeup Tips

    ipsy Makeup

    19 ŞUBAT 2009
  • LiteralMSPaint

    LiteralMSPai

    27 EKİM 2010
  • Phymec

    Phymec

    18 Temmuz 2009