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" >

(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" >

时间: 2024-12-18 21:28:47

js之第三方工具解析JSON的相关文章

JS中生成与解析JSON

js中生成json对象 js中解析json字符串: 1.eval("..."): var a_id=eval('{"name":123}'); 如果eval中的内容含有恶意脚本就麻烦了 2.json_parse: 需要导入json_parse.js: <script src="js/json_parse.js"></script>    <script language="javascript"&

gson终结者—使用gson工具解析json字符串

昨天加了一天的班,在"高人"指点下解决了一个重大的问题--使用gson解析特别复杂的json字符串,哎,不总结总觉得少了点什么,睡不着.现将代码及相关说明附上: 1.使用的jar包为gson-2.2.2.jar,其下载地址为:http://download.csdn.net/download/wangshuxuncom/8162997

js写ajax并解析json

function down(t){  var req = createRequest();  //创建request req.open("GET","selectWordDate?date_time="+t);  //发送请求 req.onreadystatechange = function(){  callback(req); } req.send(null);} function createRequest(){ if(window.XMLHttpReques

mac工具-解析json visualJSON和JSON Accelerator这两款工具

JS的全局函数eval解析JSON字符串函数

JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String

js中eval详解,用Js的eval解析JSON中的注意点

先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要特别注意的是对象声明语法“{}”并不能返回一个值,需要用括号括起来才会返回值,简单示例如下: var s1='"a" + 2'; //表达式var s2='{a:2}'; //语句alert(eval(s1)); //->'a2'alert(eval(s2)); //->und

用Js的eval解析JSON中的注意点

分享:用Js的eval解析JSON中的注意点 在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的each方法来遍历 用jquery解析JSON数据的方法,作为jquery异步请求的传输对 象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大

利用fastjson解析json并通过js&amp;ajax实现页面的无跳转刷新

1.json是一种优秀的数据格式,在移动开发和web开发中经常用到,本例中通过一个小案例讲解如何通过alibaba的开源框架fastjson来解析jason数据格式并通过js实现无跳转刷新 2,新建一个web项目,这是我的项目:我这里直接用servlet写的 注意导包,我这里到了很多无用的包,其实主要的包是下面几个: 这个三个包是必须的,其他都是开发基本web的常用包 3.创建一个domain: package com.keson.domain; import com.thoughtworks.

不适用工具类解析Json

解析的数据: { "citycode": "101051301", "citydesc": "黑龙江 双鸭山", "cityname": "双鸭山", "data": [ { "date": "2015-08-29", "icon": "d07|n07", "temperatur