Структура JSON в csv в Go Lang

Ищем идеи для экспорта структур чтения JSON в некоторый формат csv с сохранением иерархии.

https://play.golang.org/p/jf2DRL1hC5K

/* 
Expected output in excel for data wrangling: 
A Key       | B Key     | C Key     | D Key
SomethingA    SomethingB      SomethingC      SomethingF 
SomethingA    SomethingB      SomethingC      SomethingG
SomethingA    SomethingB      SomethingC      [1,2,3]   
*/

Я попытался перебрать структуру следующим образом

for _, value := range mymodel { 
   fmt.Println(value) 

/* could not iterate over structs */ 
} 
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
2
0
2 381
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Добавление метода в вашу RootModel как для заголовка, так и для отдельных строк (чтобы вы могли варьироваться по типу и печатать заголовок только один раз):

type RootModel struct {
        A string
        B string
        C string
        D factors
}

type factors struct {
        F string
        G string
        H []int
}

func (*RootModel) CSVheader(w io.Writer) {
        cw := csv.NewWriter(w)
        cw.Write([]string{"A Key", "B Key", "C Key", "D Key"})
        cw.Flush()
}

func (rm *RootModel) CSVrow(w io.Writer) {
        cw := csv.NewWriter(w)
        cw.Write([]string{rm.A, rm.B, rm.C, rm.D.F})
        cw.Write([]string{rm.A, rm.B, rm.C, rm.D.G})

        is, _ := json.Marshal(rm.D.H)
        cw.Write([]string{rm.A, rm.B, rm.C, string(is)})
        cw.Flush()
}

Детская площадка: https://play.golang.org/p/c8UQVQ8tQTX

Выход:

A Key,B Key,C Key,D Key
SomethingA,SomethingB,SomethingC,SomethingF
SomethingA,SomethingB,SomethingC,SomethingG
SomethingA,SomethingB,SomethingC,"[1,2,3]"

Примечание:, если вы имеете дело с фрагментом RootModel, вы можете поместить логику записи CSV на этот уровень, чтобы он мог обрабатывать один рендер строки заголовка, а затем последующие строки данных.

Это выглядит хорошо, если бы у меня был такой формат, но на самом деле мой формат находится в структуре. Я прочитал пакет csv и понимаю, что это может быть вывод в том случае, если у меня есть данные в ожидаемом формате, как показано в приведенном выше «ожидаемом выводе». Но все мои данные в формате структуры. {SomethingA SomethingB SomethingC {SomethingF SomethingG [1 2 3]}}, как мне отформатировать это в

superenme 20.05.2019 20:52

@superenme обновил ответ, чтобы включить методы структуры для достижения желаемого результата для одной или нескольких записей.

colm.anseo 20.05.2019 22:08

Я нашел другой способ, так как у меня есть много корневых моделей, в качестве альтернативы я мог перебирать массив [] корневых моделей. Я могу перебирать массивы, а не структуры. Большое спасибо за ответ, это определенно помогает!

superenme 21.05.2019 21:55

Другие вопросы по теме