2016-01-13 57 views
0

有誰知道如何爲多級別結構設置標籤名稱? 結構的頂級標籤名稱正常工作,但所有子標籤名稱都與結構中的名稱相同。嘗試將所有標記名稱設置爲小寫。golang - fomatting struct到json

的代碼可以運行here

package main 

import (
    "encoding/json" 
    "log" 
) 

type Source struct { 
    Pointer string `json:pointer,omitempty"` 
    Parameter string `json:parameter,omitempty"` 
} 

type Error struct { 
    Status int  `json:"status,omitempty"` 
    Source *Source `json:"source,omitempty"` 
    Title string `json:"title,omitempty"` 
    Detail string `json:"detail,omitempty"` 
} 

type Errors struct { 
    Errors *[]Error `json:"errors"` 
} 

func main() { 
    errors := new(Errors) 
    errors.Errors = new([]Error) 
    error := new(Error) 
    error.Source = new(Source) 
    error.Source.Pointer = "pointer" 
    error.Status = 401 
    error.Title = "title" 
    error.Detail = "detail" 
    *errors.Errors = append(*(errors.Errors), *error) 
    response, _ := json.Marshal(errors) 
    log.Println("response", string(response)) 
} 

輸出:

{ 
    "errors": [ 
    { 
     "status": 400, 
     "source": { 
     "Pointer": "pointer", 
     "Parameter": "" 
     }, 
     "title": "title", 
     "detail": "detail" 
    } 
    ] 
} 
+2

你有'''缺少''json:pointer,omitempty「'' – helmbert

+0

非常感謝:) –

回答

0

你已經錯過了一些報價:

Pointer string `json:pointer,omitempty"` 
Parameter string `json:parameter,omitempty"` 
        // ^^^ Here. 

遊樂場:https://play.golang.org/p/P3oHK29VKQ