如何将json数据提供给Golang中的页面?

时间:2016-04-01 04:47:07

标签: jquery json go

这不是元帅或解组的问题,我需要写什么来与我的Jquery一起写给我的作家?

现在我有了Go

func serveJson(w http.ResponseWriter, r *http.Request, ps httprouter.Params){
    j, _ := os.Open("adjs.json")

    defer j.Close()

    var obj respWords

    json.NewDecoder(j).Decode(&obj)
    js, _ := json.Marshal(obj)

    w.Header().Set("Content-Type", "application/json")

    w.Write(js)
}

这是我的jquery获取json

<script type = "text/javascript">
    function randomize() {
        scene = {}
        $.getJSON('adjs.json', function(scene){
           console.log('encoding')
        })
        console.log(scene)
    }
</script>

2 个答案:

答案 0 :(得分:3)

您的异步请求不会将数据保存到外部变量,在您的ajax请求的成功函数中执行您的逻辑

$.getJSON('adjs.json', function(scene){
           console.log(scene);
           //do logic here with scene
        });

答案 1 :(得分:1)

您可以按如下方式提供包含JSON的文件:

func serveJson(w http.ResponseWriter, r *http.Request, ps httprouter.Params){
    j, err := os.Open("adjs.json")
    if err != nil {
        http.Error(w, "Internal Server Error", 500)
        return
    }
    defer j.Close(0
    w.Header().Set("Content-Type", "application/json")
    io.Copy(w, f)
}

无需对文件进行解码和编码。

您还可以使用ServeFile

func serveJson(w http.ResponseWriter, r *http.Request, ps httprouter.Params){
    http.ServeFile(w, r, "adjs.json")
}