以HTML表格式获取JSON数据

时间:2017-05-14 17:13:28

标签: javascript html css

这是我的代码,我正在尝试从API中提取JSON数据。

数据正在被成功提取,但它不是以表格形式出现的。它是一个连续的水平字符串。

public class ServerDemo {
    public static void main(String[] args) throws IOException {
        System.out.println("server is started");
        ServerSocket serverSocket= new ServerSocket(55286);
        System.out.println("server is waiting");
        Socket socket=serverSocket.accept();
        System.out.println("Client connected");
        BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String str=reader.readLine();
        System.out.println("Client data: "+str);
        socket.close();
        serverSocket.close();

    }
}

我在里面使用了3种不同类型的代码(其中2种标记在活动代码的上方和下方的注释中)。

他们都没有以表格格式显示数据。

这是Codepen

2 个答案:

答案 0 :(得分:1)

对您的代码进行一点修改。

请以下列方式使用

document.getElementById("demo").innerHTML = '<table><thead><tr><th>' + 
myObj["dataset"]["column_names"][5] + '</th><th>' + myObj["dataset"]
["column_names"][6] + '</th></tr></thead>';   

答案 1 :(得分:1)

问题在于,当您设置元素的innerHTML时,浏览器会自动关闭所有未打开的标记,因为它必须解析您指定为完整HTML的内容。因此,您无法在单独的分配中连接开始标记,内容和结束标记。

解决方案是在您构建它时将所有HTML分配给字符串变量,然后在最后将其分配给.innerHTML。这也更有效,因为它不必继续解析HTML。

&#13;
&#13;
if (this.readyState == 4 && this.status == 200) {
  // Typical action to be performed when the document is ready:
  var respoTxt = xhttp.responseText;
  var myObj = JSON.parse(respoTxt);
  var html = '<table><tr><thead>' +
    myObj["dataset"]["column_names"][5] + '</thead><thead>' + myObj["dataset"]
    ["column_names"][6] + '</thead></tr>';
  myObj["dataset"]["data"].forEach(function(p, i) {
    html += '<tr>';
    html += '<td>' + myObj["dataset"]
      ["data"][i][5] + '</td>';
    html += '<td>' + myObj["dataset"]
      ["data"][i][6] + '</td>';
    html += '</tr>';

  });
  html += '</table>';
  document.getElementById('demo').innerHTML = html;
}
&#13;
&#13;
&#13;