Как создать этот JSON с Go - PullRequest
       25

Как создать этот JSON с Go

0 голосов
/ 27 декабря 2018

Я пытаюсь создать код 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": ""
        }
    ]
}

1 Ответ

0 голосов
/ 27 декабря 2018

Если вы хотите инициализировать его как литерал, вам нужно поставить все запятые на место:

request := request{
    headerRecord: headerRecord{
        ClientNumber:  "0000000001",
        BusinessUnit:  "Biz Unit",
        ValidationKey: "123456",
        DataYear:      "2016",
        DataMonth:     "05",
        TotalRevenue:  "600.00",
    },
    ItemList: []dataRecord{
        {
            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:              "",
        },
    },
}

Пожалуйста, посмотрите рабочий пример на Go Playground .

...