将 JSON 解组为结构体

我的问题很小但非常令人沮丧,因为我似乎无法得到答案。我正在尝试访问来自 Google Script 的响应的 JSON 部分。在 Golang 中,我设法将其剥离为这个


map[@type:type.googleapis.com/google.apps.script.v1.ExecutionResponse result:[

{

    "id": 1,

    "casenumber": "Criminal Case 20 of 2012",

    "datedelivered": "2015-10-22T21:00:00.000Z",

    "judge": "George Matatia Abaleka Dulu",

    "court": "High Court",

    "location": "Garissa",

    "accused": "Abdi Sheikh Mohamed",

    "judgment": "The accused Abdi Sheikh Mohamed stands charged with the offence of murder contrary to Section 203 as read with Section 204 of the Penal Code.  The particulars of the offence are that on 8th May 2012 at Ifo Refugee camp, Lagdera District within Garissa County murdered Othon Ubang Alwal.  He has denied the charge."

},

{

    "id": 2,

    "casenumber": "Criminal Case 21 of 2012",

    "datedelivered": "2015-11-22T21:00:00.000Z",

    "judge": "Lilo",

    "court": "High Court",

    "location": "Nairobi",

    "accused": "Stitch",

    "prosecution": "Milo",

    "judgment": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"

}

]]

但我需要通过摆脱


map[@type:type.googleapis.com/google.apps.script.v1.ExecutionResponse result:[

所以我只有结果部分。


到目前为止,我已经尝试将它解组到我的结构中,但没有成功。这是结构


type Case struct {

    ID int            

    CaseNumber string 

    DateDelivered string 

    Judge string 

    Court string 

    Location string                                   

    Accused string 

    Prosecution string 

    Judgment string

}

任何帮助将不胜感激。


编辑:我所说的解组部分的意思是当我尝试解组到我的结构中时(即使在修复了结构之后)我得到了错误


json: cannot unmarshal object into Go value of type []Case

这是我开始工作所需的代码http://play.golang.org/p/rmsvfPVx52。


一只甜甜圈
浏览 155回答 3
3回答

素胚勾勒不出你

您需要通过以大写字符开头的名称来导出Case 中的字段。type Case struct {  ID int              CaseNumber string   DateDelivered string   Judge string   Court string   Location string                                     Accused string   Prosecution string   Judgment string}encoding/json 包和类似的包会忽略未导出的字段。使用切片解码 JSON 数组:  var result []Case  err := json.Unmarshal(data, &result)  if err != nil {     // handle error  }

至尊宝的传说

哪里c是map[@type:type.googleapis.com/google.apps.script.v1.ExecutionResponse result:[{"id": 1,"casenumber": "Criminal Case 20 of 2012","datedelivered": "2015-10-22T21:00:00.000Z","judge": "George Matatia Abaleka Dulu","court": "High Court","location": "Garissa","accused": "Abdi Sheikh Mohamed","judgment": "The accused Abdi Sheikh Mohamed stands charged with the offence of murder contrary to Section 203 as read with Section 204 of the Penal Code.  The particulars of the offence are that on 8th May 2012 at Ifo Refugee camp, Lagdera District within Garissa County murdered Othon Ubang Alwal.  He has denied the charge."},{"id": 2,"casenumber": "Criminal Case 21 of 2012","datedelivered": "2015-11-22T21:00:00.000Z","judge": "Lilo","court": "High Court","location": "Nairobi","accused": "Stitch","prosecution": "Milo","judgment": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"}]]我做到了;case:= c.(map[string]interface {})fmt.Println(case["result"])这使;[{    "id": 1,    "casenumber": "Criminal Case 20 of 2012",    "datedelivered": "2015-10-22T21:00:00.000Z",    "judge": "George Matatia Abaleka Dulu",    "court": "High Court",    "location": "Garissa",    "accused": "Abdi Sheikh Mohamed",    "judgment": "The accused Abdi Sheikh Mohamed stands charged with the offence of murder contrary to Section 203 as read with Section 204 of the Penal Code.  The particulars of the offence are that on 8th May 2012 at Ifo Refugee camp, Lagdera District within Garissa County murdered Othon Ubang Alwal.  He has denied the charge."},{    "id": 2,    "casenumber": "Criminal Case 21 of 2012",    "datedelivered": "2015-11-22T21:00:00.000Z",    "judge": "Lilo",    "court": "High Court",    "location": "Nairobi",    "accused": "Stitch",    "prosecution": "Milo",    "judgment": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"}]

守候你守候我

您需要先去除无效的 json:data := `{"result":[{    "id": 1,    ...},{    "id": 2,    ...}]}`同样,您需要将 json defn 添加到结构中:type Result struct {    Result []Case `json:"result"`}type Case struct {    ID            int    `json:"id"`    CaseNumber    string `json:"casenumber"`    DateDelivered string `json:"datedelivered"`    Judge         string `json:"judge"`    Court         string `json:"court"`    Location      string `json:"location"`    Accused       string `json:"accused"`    Prosecution   string `json:"prosecution"`    Judgment      string `json:"judgement"`}例子:http://play.golang.org/p/KUbDpSxMVI
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go