js解析json数据

来源:互联网 发布:四川大学网络教育费用 编辑:程序博客网 时间:2024/04/26 18:56

关于json数据格式,可以参考   http://www.w3school.com.cn/json/json_eval.asp


一 ,简单数据解析  ,传递一个用户的姓名和帐号 

var xmlhttp;function m(){//alert("草");var cars=document.getElementById("cars");    var car1=cars.getElementsByTagName("li");    car1[1].innerHTML="nima";if(window.XMLHttpRequest){    xmlhttp=new XMLHttpRequest();}else {    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}    xmlhttp.onreadystatechange=myfunc;  xmlhttp.open("GET","jsonAction",true);    xmlhttp.send();}function myfunc(){       if(xmlhttp.readyState==4&&xmlhttp.status==200)        {        obj = eval("("+xmlhttp.responseText+")");    alert("完成请求:");    alert(obj.name);    alert(obj.pwd);        }if(xmlhttp.readyState==1)        {            //alert("建立连接");        }        if(xmlhttp.readyState==2)        {            //alert("接收请求");        }if(xmlhttp.readyState==3)        {            //alert("处理请求中");        }        }  


action代码

package com.action;import com.opensymphony.xwork2.ActionSupport;public class jsonAction extends ActionSupport{private static final long serialVersionUID = 1L;private String name = "jiajia";private String pwd = "588" ;public String getName(){return this.name;}public String getPwd(){return this.pwd;}public String loadUser(){return SUCCESS;}}

struts.xml文件内容如下

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC          "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"          "http://struts.apache.org/dtds/struts-2.3.dtd">           <struts> <package name="jsonAcion" namespace="" extends="json-default"><action name="jsonAction" class="com.action.jsonAction" method="loadUser"><result name="success" type="json">/index.jsp</result></action></package>  </struts>


重要的语句在于eval这个函数,注意两边加括号 


二,解析复杂数据,多个用户的姓名和帐号

var xmlhttp;function m(){//alert("草");var cars=document.getElementById("cars");    var car1=cars.getElementsByTagName("li");    car1[1].innerHTML="nima";if(window.XMLHttpRequest){    xmlhttp=new XMLHttpRequest();}else {    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}    xmlhttp.onreadystatechange=myfunc;  xmlhttp.open("GET","jsonAction",true);    xmlhttp.send();}function myfunc(){       if(xmlhttp.readyState==4&&xmlhttp.status==200)        {        obj = eval("("+xmlhttp.responseText+")");    alert("完成请求:"+xmlhttp.responseText);    alert(obj.userList[0].username);    alert(obj.userList[0].username+" "+obj.userList[0].pwd+" "+obj.userList[1].username+" "+obj.userList[1].pwd);    //alert(obj[0].pwd);        }if(xmlhttp.readyState==1)        {            //alert("建立连接");        }        if(xmlhttp.readyState==2)        {            //alert("接收请求");        }if(xmlhttp.readyState==3)        {            //alert("处理请求中");        }        }

action代码

package com.action;import java.util.ArrayList;import java.util.List;import com.opensymphony.xwork2.ActionSupport;import com.user.User;public class jsonAction extends ActionSupport{private static final long serialVersionUID = 1L;private List<User> userList = new ArrayList<User>();public void setUserList(){User user1 = new User();user1.setPwd("1234");user1.setUsername("佳佳");User user2 = new User();user2.setPwd("5678");user2.setUsername("佳佳");this.userList.add(user1);this.userList.add(user2);}public List<User> getUserList(){return this.userList;}public String loadUser(){this.setUserList();return SUCCESS;}}

火弧浏览器下调试结果图



创建包含 JSON 语法的 JavaScript 字符串:

var txt = '{ "employees" : [' +'{ "firstName":"Bill" , "lastName":"Gates" },' +'{ "firstName":"George" , "lastName":"Bush" },' +'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';

由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")");

在网页中使用 JavaScript 对象:

例子

<p>First Name: <span id="fname"></span><br />Last Name: <span id="lname"></span><br /></p><script type="text/javascript">document.getElementById("fname").innerHTML = obj.employees[1].firstNamedocument.getElementById("lname").innerHTML = obj.employees[1].lastName</script>

0 0
原创粉丝点击