Я пытаюсь создать код go, который будет выводить JSON.Строка JSON представляет счет-фактуру и ее позиции.Есть две основные части: это заголовок записи и список элементов.Список предметов - это то, что доставляет мне неприятности.Он содержит массив позиций счетов-фактур.Я не могу понять, как построить это на ходу.Может кто-нибудь помочь мне в этом?
package controllers
import (
"github.com/revel/revel"
)
type Test struct {
*revel.Controller
}
type headerRecord struct {
ClientNumber string
BusinessUnit string
ValidationKey string
DataYear string
DataMonth string
TotalRevenue string
}
type dataRecord struct {
LineNumber string
InvoiceNumber string
CustomerNumber string
Zipcode string
TransDate string
Revenue string
TaxSitusRule string
TransTypeCode string
SalesTypeCode string
RegulatoryCode string
TaxExemptionCodeList []string
Geocode string
}
type request struct {
headerRecord
ItemList []dataRecord
}
func (c Test) Test() revel.Result {
request := request{
headerRecord: headerRecord{
ClientNumber: "0000000001",
BusinessUnit: "Biz Unit",
ValidationKey: "123456",
DataYear: "2016",
DataMonth: "05",
TotalRevenue: "600.00",
},
ItemList: []dataRecord{
},
}
/*
1st data record
LineNumber: "1",
InvoiceNumber: "123456",
Zipcode: "75024",
TransDate: "2016-05-15",
Revenue: "100.00",
TaxSitusRule: "05",
TransTypeCode: "050201",
SalesTypeCode: "B",
RegulatoryCode: "99",
TaxExemptionCodeList: []string{"00"},
Geocode: "",
*/
return c.RenderJSON(request)
}
Вот что должно быть:
{
"ClientNumber": "0000000001",
"BusinessUnit": "Biz Unit",
"ValidationKey": "12345",
"DataYear": "2016",
"DataMonth": "05",
"TotalRevenue": "600.00",
"ItemList": [
{
"LineNumber": "1",
"InvoiceNumber": "123456",
"CustomerNumber": "98765",
"BillToNumber": "",
"Zipcode": "75024",
"TransDate": "2016-05-15",
"Revenue": "100.00",
"TaxSitusRule": "05",
"TransTypeCode": "050201",
"SalesTypeCode": "B",
"RegulatoryCode": "99",
"TaxExemptionCodeList": [
"00"
],
"Geocode": ""
},
{
"LineNumber": "2",
"InvoiceNumber": "123456",
"CustomerNumber": "98765",
"BillToNumber": "",
"Zipcode": "75024",
"TransDate": "2016-05-15",
"Revenue": "200.00",
"TaxSitusRule": "05",
"TransTypeCode": "050201",
"SalesTypeCode": "B",
"RegulatoryCode": "99",
"TaxExemptionCodeList": [
"00"
],
"Geocode": ""
},
{
"LineNumber": "3",
"InvoiceNumber": "123456",
"CustomerNumber": "98765",
"BillToNumber": "",
"Zipcode": "75024",
"TransDate": "2016-05-15",
"Revenue": "300.00",
"TaxSitusRule": "05",
"TransTypeCode": "050201",
"SalesTypeCode": "B",
"RegulatoryCode": "99",
"TaxExemptionCodeList": [
"00"
],
"Geocode": ""
}
]
}