2015-01-30 2 views
-1

Все еще довольно новый с Go. Я пытаюсь получить по существу печать структуры с ключами и значениями как можно ближе к json.Go Lang Return JSON

Способ, которым я в настоящее время занимаюсь этим, заключается в том, что GO на своем собственном сервере и всякий раз, когда делается запрос на получение, он возвращает JSON. Я хотел бы иметь GO как исполняемый файл на моем основном сервере Rails и просто вернуть JSON с чем-то вроде Println (или что бы он ни оставался в структурной форме). Проблема в том, что когда я пытаюсь пройти этот маршрут, ключи от структуры не печатаются вместе с ним, и в основном я должен добавить ключи как часть возвращаемой строки.

Есть простой способ сделать это с сохранением правильных ключей и значений (и их типы, поэтому, если значение является массивом, сохранить массив)

+0

Можете ли вы показать текущий код, который вы печатаете в структуре без их ключей? –

ответ

1

Печать на структуру как JSON в STDOUT довольно прямо вперед в Go:

package main 

import (
    "encoding/json" 
    "fmt" 
    "log" 
    "os" 
) 

func main() { 
    foo := struct { 
     Hello string 
     JSON string 
    }{ 
     Hello: "world", 
     JSON: "stuff", 
    } 

    fmt.Printf("foo struct : %+v\n", foo) 

    if err := json.NewEncoder(os.Stdout).Encode(foo); err != nil { 
     log.Fatal(err) 
    } 

} 

http://play.golang.org/p/wqqGJ1V_Zg

Эта программа будет выводить следующее:

foo struct : {Hello:world JSON:stuff} 
{"Hello":"world","JSON":"stuff"} 

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

+0

Хмм, позвольте мне попробовать это с моим текущим кодом и посмотреть, не делает ли это этого. Я чувствую, что делал это точно так, как раньше, и по какой-то причине он не печатал ключи структур. Я прокомментирую это через несколько часов, когда вернусь на рабочий компьютер, спасибо Лео. –

+0

Эй, я наконец-то подобрался, чтобы проверить ваш ответ. Извините, так долго. Таким образом, ваш пример выводит только выходы: 'foo struct: {Hello: world JSON: stuff}' К сожалению, мне действительно нужны кавычки и запятые, как у обычного JSON strong, поэтому я не думаю, что так будет работать. Спасибо, хотя –

+0

Я до сих пор не понимаю, чего вы пытаетесь достичь. Почему вы хотите написать структуру как можно ближе к JSON? Вы можете просто распечатать это представление JSON, которое является второй строкой этого вывода, используя 'json.NewEncoder' –

Смежные вопросы