Как я могу набрать массив смешанных типов в Голанге? - PullRequest
0 голосов
/ 05 сентября 2018

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

var models = map[string]interface{} {
   ...
   "req": [[0, "all", [0]]],
   ...
}

Есть ли способ присвоить тип этому вложенному массиву? Или есть лучший подход для создания этого JSON, чем карта?

Редактировать: Все ближе Я думаю, не знаю, что делать с вложенными массивами

var models = map[string]interface{} {
       ...
       "req": []interface{}{[[0, "all", [0]]]},
       ...
    }

Редактировать: Весь JSON, который я ищу для создания, я просто застрял на клавише "req", но так как он был запрошен:

{
    1388596687391: {
      veArs: [],
      name: 'Basic-f15d2',
      tags: ['Tag'],
      did: 1435588830424,
      usn: -1,
      req: [[0, 'all', [0]]],
      flds: [
        {
          name: 'Front',
          media: [],
          sticky: false,
          rtl: false,
          ord: 0,
          font: 'Arial',
          size: 20
        },
        {
          name: 'Back',
          media: [],
          sticky: false,
          rtl: false,
          ord: 1,
          font: 'Arial',
          size: 20
        }
      ],
      sortf: 0,
      latexPre:
        '\\documentclass[12pt]{article}\n\\special{papersize=3in,5in}\n\\usepackage[utf8]{inputenc}\n\\usepackage{amssymb,amsmath}\n\\pagestyle{empty}\n\\setlength{\\parindent}{0in}\n\\begin{document}\n',
      tmpls: [
        {
          name: 'Card 1',
          qfmt: questionFormat,
          did: null,
          bafmt: '',
          afmt: answerFormat,
          ord: 0,
          bqfmt: ''
        }
      ],
      latexPost: '\\end{document}',
      type: 0,
      id: 1388596687391,
      css,
      mod: 1435645658
    }
  }

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Литералы среза / массива / карты работают одинаково, , как объяснено в обзоре. - каждому литералу значения просто нужен тип, указанный, когда содержащийся тип еще не указывает тип (т. Е. Карта / slice / array типа интерфейса), и каждый список значений заключен в скобки {}, а не в скобки [], как в JSON:

   "req": []interface{}{[]interface{}{[]interface{}{0, "all", []interface{}{0}}}},

Обратите внимание, что последний элемент также может быть записан как []int{0}.

0 голосов
/ 05 сентября 2018

Вот базовый пример этого:

package main

import "fmt"

func main() {
  primes := [6]int {2, 3, 5, 7, 11, 13}
  mixed := []interface{} {"foo", 10, primes }
  //fmt.Println(mixed...)

  test := map[string]interface{} {
    "omar":mixed,
  }

  fmt.Println(test["omar"])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...