2016-08-15 7 views
-1

私はGolangを完全に新しくしました。Golangは角かっこでJSONをラップします

{...}にJSONをラップさせないようにする方法がわかりません。

例ので:

package main 

import (
    "net/http" 
    "bytes" 
    "fmt" 
) 

func main() { 
    request, _ := http.NewRequest("POST", "http://example.com", bytes.NewBufferString(`["foobar":42]`)) 
    fmt.Println(request) 
} 

この例の出力は以下となります。あなたは今{}に包まれている(JSONがBTW有効である)私達の配列を見ることができるように

&{POST http://example.com HTTP/1.1 1 1 map[] {["foobar":42]} 13 [] false example.com map[] map[] <nil> map[] <nil> <nil>} 

。私はアイデアがなくなってしまった。

ありがとうございます!

+4

それはJSONではないですが、それが唯一であります'println'やデバッグ印刷のようなものに適用できます。それは何も意味しませんし、決してそれを修正する必要はありません。 –

+1

@Not_a_Golferが書いたとおり。 'fmt.Println(bytes.NewBufferString(...))'(あなたのjsonをそこに挿入する)、 '[" foobar ":42]' – icza

+0

これが渡されることを恐れたらサーバーに、恐れてはいけない。サーバはあなたがエンコードしたのとまったく同じようにボディを受信します。 –

答えて

2

は、それはかなりの印刷だ、func Println(a ...interface{}) (n int, err error)ドキュメントを参照してください。そのオペランドのデフォルトのフォーマットを使用して

のprintlnフォーマットを、標準出力に を書き込みます。スペースは常にオペランドの間に追加され、 改行が追加されます。これは、書き込まれたバイト数と、遭遇した書き込みエラー を返します。

strings.Trim(st, "{}")を使用して、{}を文字列から削除することができます。
あなたはこのワーキングサンプルコードのように、JSONのためMarshalUnmarshalを使用することがあります。

package main 

import (
    "encoding/json" 
    "fmt" 
    "log" 
    "strings" 
) 

type Foo struct { 
    Foobar int `json:"foobar"` 
} 

func main() { 
    str := `{ 
      "Foobar": 42 
    }` 
    var d Foo 
    err := json.Unmarshal([]byte(str), &d) 
    if err != nil { 
     log.Fatal(err) 
    } 
    fmt.Println(d) // {42} 

    fmt.Println() 
    body, err := json.Marshal(d) 
    if err != nil { 
     panic(err) 
    } 
    st := string(body) 
    fmt.Println(st) //{"foobar":42} 

    fmt.Println(strings.Trim(st, "{}")) // "foobar":42 
} 

出力:、それはオブジェクトの「かわいい印刷」の表現

{42} 

{"foobar":42} 
"foobar":42 
+0

@zmeda私はこれが助けてくれることを願っています。 –

関連する問題