Распечатать массив карт в формате JSON - PullRequest
0 голосов
/ 17 января 2020

Я работаю над проектом Go, который использует API Serpwow для поиска в Google по заданному термину.

Получив список веб-сайтов, я пытаюсь напечатать значения, которые хранятся на карте в формате Json. На карте есть только один столбец, который содержит заголовок, так как это единственная информация, которая меня интересует.

Вот фрагмент кода, который мне нужно распечатать в данный момент:

// retrieve the search results as JSON
response, error := serpwow.GetJSON(parameters, apiKey)

// print the response, or error, if one occurred
if error != nil {
    fmt.Println(error)
} else {
    //extract each title from organic results
    fmt.Println(responseJson)
    for _, item := range response["organic_results"].([]interface{}) {
        title := item.(map[string]interface{})["title"]
        titleJson, _ := json.Marshal(title)
        fmt.Printf(titleJson)
        //fmt.Printf("%v", item.(map[string]interface{})["title"])
    }

результат:

"10 лучших пиццерий в Дублине - TripAdvisor" "Domino's Pizza: пицца для доставки или вынос на вынос" "10 лучших пиццерий в Дублине | www.98fm.com" «Список ведер для пиццы: девять лучших мест, где можно починить ...» «10 лучших пицц в Дублине - кусочек города на каждый ценовой пункт» «Ищете лучший кусочек пиццы в Дублине? Вот где. .. "" Apache Pizza. Pizza Delivery \ u0026 Магазины на вынос по всей ... "" Четыре звезды Pizza Ирландия, доставка пиццы во всей красе! "" Пицца на вынос и рестораны в Дублине | Заказ от Just ... "" Pizza Delivery, Deals \ u0026 Еда на вынос | Заказ онлайн с пиццей ... "

Как видите, вывод не отформатирован в JSON. Может ли кто-нибудь помочь мне понять, что я делаю неправильно?

1 Ответ

0 голосов
/ 17 января 2020

Кажется, что вы пытаетесь кодировать строку (заголовок), однако сначала вам нужно создать объект, а затем кодировать его и вывести:

// Or any other struct/type which follows the format of JSON you want
var titles []string
for _, item := range response["organic_results"].([]interface{}) {
    title := item.(map[string]interface{})["title"]
    titles = append(titles, title)     
}

res, err := json.Marshal(titles)
if err == nil {
    fmt.Println(string(res))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...