JSON和XML都是数据交换格式
XML体积大,解析麻烦,较少用
JSON体积小,解析简单,较多用
基于JSON的数据交换
//An highlighted block
PrintWriter out = response.getWriter();
StringBuilder json = new StringBuilder();
String jsonStr = "";
// json.append("[");
// 连接数据库后将数据转化为JSON字符串
// while (rs.next()) {
// String name = rs.getString("name");
// String age = rs.getString("age");
// String addr = rs.getString("addr");
// //{"name":" 王五 ","age": 20 ,"addr":" 北京 "},
// json.append("{\"name\":\"");
// json.append(name);
// json.append("\",\"age\":");
// json.append(age);
// json.append(",\"addr\":\"");
// json.append(addr);
// json.append("\"},");
// }
// jsonStr = json.substring(0, json.length() - 1) + "]";
//使用fastJSON快速将数据库数据转为JSON字符串
List<Student> listStu = new ArrayList();
while (rs.next()) {
String name = rs.getString("name");
int age = rs.getInt("age");
String addr = rs.getString("addr");
Student s = new Student(name, age, addr);
listStu.add(s);
}
//fastjson中的JSON对象
jsonStr = JSON.toJSONString(listStu);
out.print(jsonStr);
//转为JSON对象
var stuList = JSON.parse(this.responseText);
var html = "";
for(var i = 0; i < stuList.length; i ++){//拿到每一个json
var stu = stuList[i]
//拼接html代码
html += "<tr>\n" +
" <th>"+(i + 1)+"</th>\n" +
" <th>"+stu.name+"</th>\n" +
" <th>"+stu.age+"</th>\n" +
" <th>"+stu.addr+"</th>\n" +
" </tr>"
}
document.getElementById("info").innerHTML = html
基于XML的数据交换
//注意:使用XML交换数据时response.setContentType方法中text/html将替换为
//text/xml
response.setContentType("text/xml;charset=UTF-8");
PrintWriter out = response.getWriter();
StringBuilder xml = new StringBuilder();
xml.append("<students>\n " +
" <student>\n" +
" <name>zhangsan</name>\n" +
" <age>20</age>\n" +
" </student>\n" +
" <student>\n" +
" <name>lisi</name>\n" +
" <age>22</age>\n" +
" </student>\n" +
" </students>\n");
out.print(xml);
var XMLDoc = this.responseXML;
// console.log(XMLDoc)
//取出所有student元素(数组)
var students = XMLDoc.getElementsByTagName("student");
var html = ""
for(var i = 0; i < students.length; i ++){
//拿到每一个student对象
var student = students[i]
//获取student对象下的所有子元素
var childNodes = student.childNodes;
html += "<tr>"
html += "<th>"+(i + 1)+"</th>"
for(var j = 0; j < childNodes.length; j ++){
//拿到每一个子元素
var node = childNodes[j]
if(node.nodeName == "name"){
html += "<th>"+node.textContent+"</th>"
}
if(node.nodeName == "age"){
html += "<th>"+node.textContent+"</th>"
}
}
html += "<tr>"
}
document.getElementById("info").innerHTML = html