Правильный вывод блока JSON из Голанга - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть поиск решения этой проблемы. Это на самом деле из базы данных SQL, но это также иллюстрирует проблему:

package main

import (
    "fmt"
    "encoding/json"
)

func main() {
    m := map[string]string{
      "USER_ID":"JD", 
      "USER_NAME":"John Doe",
    }

    json, _ := json.Marshal(m)
    for i := 0; i < 4; i++ {
       fmt.Println(string(json))
    }

}

https://play.golang.org/p/7DQPiB0aWAK

Каждая строка верна, но каждая строка не разделена запятой и не заключена в квадратные скобки.

{"USER_ID":"JD","USER_NAME":"John Doe"}
{"USER_ID":"JD","USER_NAME":"John Doe"}
{"USER_ID":"JD","USER_NAME":"John Doe"}
{"USER_ID":"JD","USER_NAME":"John Doe"}

Желаемый вывод:

[{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"},
{"USER_ID":"JD","USER_NAME":"John Doe"}]

Возможно ли это с помощью строки или интерфейса map [string] или интерфейса?

1 Ответ

0 голосов
/ 26 апреля 2018

Возможно ли это с помощью строки или интерфейса map [string] или интерфейса?

Ответ прост - вы можете использовать слайс всякий раз, когда вы хотите создать вывод списка в JSON.

Вот ваш пример с желаемым выводом ( детская площадка ):

package main

import (
    "fmt"
    "encoding/json"
)

func main() {
    // define a slice of maps
    var mySlice []map[string]string

    // define a map
    m := map[string]string{
      "USER_ID":"JD", 
      "USER_NAME":"John Doe",
    }

    // add the map 4 times to the slice
    for i := 0; i < 4; i++ {
        mySlice = append(mySlice, m)
    }

    // print the slice
    json, _ := json.Marshal(mySlice)
    fmt.Println(string(json))
}
// Output: [{"USER_ID":"JD","USER_NAME":"John Doe"},{"USER_ID":"JD","USER_NAME":"John Doe"},{"USER_ID":"JD","USER_NAME":"John Doe"},{"USER_ID":"JD","USER_NAME":"John Doe"}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...