js之第三方工具解析JSON
1.JSON 仅仅是一种文本字符串。它被存储在 responseText 属性中
为了读取存储在 responseText 属性中的 JSON 数据,须要依据 JavaScript 的 eval 函数。函数 eval 会把一个字符串当作它的參数。
然后这个字符串会被当作 JavaScript 代码来运行。由于 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可运行的
比如例如以下方式:
String json = "{username:'一叶扁舟',age:22}";
var json = xhr.responseText;
json = eval("("+json+")");
alert(json.name);
2.利用第三方工具解析JSON
(1).须要导入的jar包
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTY2MjMyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
(2)代码实战:
domain实体类:
package com.wenhao.web.ajax.domain; /**
*类的作用:City实体类
*
*
*@author 一叶扁舟
*@version 1.0
*@创建时间: 2014-10-28 下午05:57:18
*/ //城市[JavaBean]
public class City {
private int id;
private String cityName;
public City(){} public City(int id, String cityName) {
super();
this.id = id;
this.cityName = cityName;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
} }
servlet服务处理:
package com.wenhao.web.ajax.servlet; import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray;
import net.sf.json.JsonConfig; import com.wenhao.web.ajax.domain.City; /**
*类的作用:JavaBean直接转成JSON对象
*这个是json传输
*
*
*@author 一叶扁舟
*@version 1.0
*@创建时间: 2014-10-28 下午05:58:20
*/
public class CityServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { String province = request.getParameter("province");
byte[] buf = province.getBytes("ISO8859-1");
province = new String(buf,"UTF-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter pw = response.getWriter();
List<City> cityList = new ArrayList<City>();
String jsonString = null;
if(province.equals("河南省")){
cityList.add(new City(1,"郑州"));
cityList.add(new City(2,"洛阳"));
cityList.add(new City(3,"开封"));
cityList.add(new City(4,"信阳"));
}else if(province.equals("福建省")){
cityList.add(new City(1,"福州"));
cityList.add(new City(2,"厦门"));
cityList.add(new City(3,"莆田"));
cityList.add(new City(4,"漳州"));
cityList.add(new City(5,"龙岩"));
}else if(province.equals("云南省")){
cityList.add(new City(1,"大理"));
cityList.add(new City(2,"昆明"));
cityList.add(new City(3,"香格里拉"));
}
JsonConfig jsonConfig = new JsonConfig();
//json数据中不包括id属性
jsonConfig.setExcludes(new String[]{"id"});
//将cityList转成json数组
JSONArray jsonArray = JSONArray.fromObject(cityList,jsonConfig);
jsonString = jsonArray.toString();
System.out.println("jsonString="+jsonString);
pw.write(jsonString); } }
jsp界面获取json数据:
<%@ page language="java" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<select id="provinceID">
<option>选择省份</option>
<option>河南省</option>
<option>福建省</option>
<option>云南省</option>
</select>
<select id="cityID">
<option>选择城市</option>
</select>
<script type="text/javascript">
document.getElementById("provinceID").onchange=function(){
//清空原city列表框
var citySelectElement = document.getElementById("cityID");
var cityElementArray = citySelectElement.options;
var size = cityElementArray.length;
if(size > 1){
//从后向前删除下拉列表框中的东西
for(var i=size-1;i>0;i--){
citySelectElement.removeChild(cityElementArray[i]);
}
}
var province = this[this.selectedIndex].innerHTML;
province = encodeURI(province);
var xhr = createXHR();
xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
//取得json字符串
var jsonString = xhr.responseText;
//将json字符串转成json对象
var jsonObject = eval("("+jsonString+")");
var size = jsonObject.length;
for(var i=0;i<size;i++){
var city = jsonObject[i].cityName;
var optionElement = document.createElement("option");
optionElement.innerHTML = city;
document.getElementById("cityID").appendChild(optionElement);
}
}
}
}
xhr.open("get","/FirstAjax/CityServlet?time="+new Date().getTime()+"&province="+province);
xhr.send(null);
}; //创建一个ajax对象
function createXHR(){
var xhr = null; //假设是IE浏览器
if(window.ActiveXObject){
xhr = new ActiveXObject("microsoft.xmlhttp");
}else{
//非IE浏览器
xhr = new XMLHttpRequest();
}
return xhr;
}
</script>
</body>
</html>
測试效果图:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTY2MjMyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
js之第三方工具解析JSON的更多相关文章
- 转:JS中生成和解析JSON
原文地址:JS中生成和解析JSON 1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name ...
- JS中生成和解析JSON
1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name = "jyy"; ...
- js写ajax并解析json
function down(t){ var req = createRequest(); //创建request req.open("GET","selectWord ...
- linux使用jq工具解析json
jq类似一个awk或grep一样的神器,可以方便地在命令行操作json 这里我使用海南万宁的天气接口做演示,地址:http://t.weather.sojson.com/api/weather/cit ...
- mac工具-解析json visualJSON和JSON Accelerator这两款工具
- js中eval详解,用Js的eval解析JSON中的注意点
先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...
- 用Js的eval解析JSON中的注意点
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...
- 关于iOS中几种第三方对XML/JSON数据解析的使用
Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特 ...
- JS的全局函数eval解析JSON字符串
JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...
随机推荐
- 从零开始学Xamarin.Forms(二) 环境搭建、创建项目
原文:从零开始学Xamarin.Forms(二) 环境搭建.创建项目 一.环境搭建 Windows下环境搭建: 1.下载并安装jdk.Android SDK和NDK,当然还需要 VS2013 ...
- 辛星解读为什么PHP须要模板
近期有个人问我:为什么PHP须要模板呢?整个站点的编写都是我一个人完毕的,从前端到后端,都是这样,我一个人写站点是不是就不须要模板了呢?我当时还真给问住了,也没想好非常合适的回答它的方式,于是就随便说 ...
- Windows远程桌面连接Ubuntu 14.04 (转)
由于xrdp.gnome和unity之间的兼容性问题,在Ubuntu 14.04版本中仍然无法使用xrdp登陆gnome或unity的远程桌面,现象是登录后只有黑白点为背景,无图标也无法操作.与13. ...
- 工程PMO工作
算起来,这是第一次以项目PMO人员的身份參与项目.尽管非常可惜没有从头參与,也没有參与到项目结束.仅仅有短短的两个月,但对项目PMO也可略窥一斑.如今就当个流水账写一写吧. 进项目组的时候,是中 ...
- 动画(Animation) 它 (闪烁、左右摇摆、跷跷板等功效)
一侧到另一侧的影响: (这里显示的是并不那么顺利) 一.续播 (不知道取什么名字好,就是先播放动画A, 接着播放动画B) 有两种方式. 第一种.分别动画两个动画,A和B, 然后先播放动画A,设置A ...
- uva 11427 - Expect the Expected(概率)
题目链接:uva 11427 - Expect the Expected 题目大意:你每天晚上都会玩纸牌,每天固定最多玩n盘,每盘胜利的概率为p,你是一个固执的人,每天一定要保证胜局的比例大于p才会结 ...
- ROW_NUMBER() OVER 排序函数的基本用法
ROW_NUMBER() OVER 排序函数 select ROW_NUMBER() OVER (PARTITION BY guide_id ORDER BY pic_sort) as rowid,p ...
- hdu 3333 树状数组+离线处理
http://acm.hdu.edu.cn/showproblem.php?pid=3333 不错的题,想了非常久不知道怎么处理,并且答案没看懂,然后找个样例模拟下别人的代码立即懂了---以后看不懂的 ...
- WEB安全实战(一)SQL盲注
前言 好长时间没有写过东西了,不是不想写,仅仅只是是一直静不下心来写点东西.当然,拖了这么长的时间,也总该写点什么的.近期刚刚上手安全方面的东西,作为一个菜鸟,也本着学习的目的,就谈谈近期接触到的安全 ...
- 编程算法 - 最小的k个数 红黑树 代码(C++)
最小的k个数 红黑树 代码(C++) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入n个整数, 找出当中的最小k个数. 使用红黑树(multiset) ...