服务json文件从GO服务器到JavaScript客户端

问题描述:

我有一个go服务器,它必须通过提供json文件来响应javascript请求。 json文件是一个对象数组。服务json文件从GO服务器到JavaScript客户端

我的代码:

服务器端

package expt 

import (
    "net/http" 
) 


func init() { 
    http.HandleFunc("/", handleStatic) 
    http.HandleFunc("/loadTrials", handleloadJson) 
} 

func handleStatic(w http.ResponseWriter, r *http.Request) { 
    w.Header().Set("Cache-Control", "no-cache") 
    http.ServeFile(w, r, "static/"+r.URL.Path) 
} 


func handleloadJson(w http.ResponseWriter, r *http.Request) { 
    http.ServeFile(w, r, "static/trial.json") 
} 

客户端

loadTrials : function loadTrials() { 

      var _this = this, 
       load = this.shadowRoot.querySelector('#load-trial'); 

      load.url="http://url:8080/loadTrials"; 
      load.go() 
      load.addEventListener('core-response', function(ev) { 
       console.log(ev.detail.response) 
      }, false); 
     } 

的Json

{ 
    "trial-data" : [ 
    { 
     "trial" : { 
     "index": 0, 
     } 
    }, 
    { 
     "trial" : { 
     "index": 1, 
     } 
    } 
    ] 
} 

如果我这样做,我得到了JavaScript中的JSON对象,但如果我试图查看JSON获取数组,即console.log(ev.detail.response ['trial-data']),那么这不起作用。

+4

请定义_ “这行不通” _。怎么了?你得到JavaScript错误?如果是这样,你得到了什么? – icza

+0

如果我做'console.log(ev.detail.response)'我得到json作为字符串,但如果我尝试做'console.log(ev.detail.response ['trial-data'])'我得到了undefined ,所以这意味着'ev.detail.response'不会返回一个数组 – Dede

ev.detail.response只是一个字符串响应,它不是一个解析的json对象。

首先,您需要使用JSON.parse()解析它,然后才能访问其内容。

看到这个JavaScript示例:

var json = '{"trial-data":[{"trial":{"index": 0}},{"trial":{"index":1}}]}' 

alert(JSON.parse(json)['trial-data']) 

访问Value第一"index"领域,例如:

var idx0 = JSON.parse(json)['trial-data'][0]['trial']['index']