1.JSON 仅仅是一种文本字符串。它被存储在 responseText 属性中

为了读取存储在 responseText 属性中的 JSON 数据,须要依据 JavaScript 的 eval 函数。函数 eval 会把一个字符串当作它的參数。

然后这个字符串会被当作 JavaScript 代码来运行。由于 JSON 的字符串就是由 JavaScript 代码构成的,所以它本身是可运行的

比如例如以下方式:

  1. String json = "{username:'一叶扁舟',age:22}";
  2. var json = xhr.responseText;
  3. json = eval("("+json+")");
  4. alert(json.name);

2.利用第三方工具解析JSON

(1).须要导入的jar包

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTY2MjMyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

(2)代码实战:

domain实体类:

  1. package com.wenhao.web.ajax.domain;
  2.  
  3. /**
  4. *类的作用:City实体类
  5. *
  6. *
  7. *@author 一叶扁舟
  8. *@version 1.0
  9. *@创建时间: 2014-10-28 下午05:57:18
  10. */
  11.  
  12. //城市[JavaBean]
  13. public class City {
  14. private int id;
  15. private String cityName;
  16. public City(){}
  17.  
  18. public City(int id, String cityName) {
  19. super();
  20. this.id = id;
  21. this.cityName = cityName;
  22. }
  23. public int getId() {
  24. return id;
  25. }
  26. public void setId(int id) {
  27. this.id = id;
  28. }
  29. public String getCityName() {
  30. return cityName;
  31. }
  32. public void setCityName(String cityName) {
  33. this.cityName = cityName;
  34. }
  35.  
  36. }

servlet服务处理:

  1. package com.wenhao.web.ajax.servlet;
  2.  
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7.  
  8. import javax.servlet.ServletException;
  9. import javax.servlet.http.HttpServlet;
  10. import javax.servlet.http.HttpServletRequest;
  11. import javax.servlet.http.HttpServletResponse;
  12.  
  13. import net.sf.json.JSONArray;
  14. import net.sf.json.JsonConfig;
  15.  
  16. import com.wenhao.web.ajax.domain.City;
  17.  
  18. /**
  19. *类的作用:JavaBean直接转成JSON对象
  20. *这个是json传输
  21. *
  22. *
  23. *@author 一叶扁舟
  24. *@version 1.0
  25. *@创建时间: 2014-10-28 下午05:58:20
  26. */
  27. public class CityServlet extends HttpServlet {
  28.  
  29. public void doGet(HttpServletRequest request, HttpServletResponse response)
  30. throws ServletException, IOException {
  31.  
  32. String province = request.getParameter("province");
  33. byte[] buf = province.getBytes("ISO8859-1");
  34. province = new String(buf,"UTF-8");
  35. response.setContentType("text/html;charset=UTF-8");
  36. PrintWriter pw = response.getWriter();
  37. List<City> cityList = new ArrayList<City>();
  38. String jsonString = null;
  39. if(province.equals("河南省")){
  40. cityList.add(new City(1,"郑州"));
  41. cityList.add(new City(2,"洛阳"));
  42. cityList.add(new City(3,"开封"));
  43. cityList.add(new City(4,"信阳"));
  44. }else if(province.equals("福建省")){
  45. cityList.add(new City(1,"福州"));
  46. cityList.add(new City(2,"厦门"));
  47. cityList.add(new City(3,"莆田"));
  48. cityList.add(new City(4,"漳州"));
  49. cityList.add(new City(5,"龙岩"));
  50. }else if(province.equals("云南省")){
  51. cityList.add(new City(1,"大理"));
  52. cityList.add(new City(2,"昆明"));
  53. cityList.add(new City(3,"香格里拉"));
  54. }
  55. JsonConfig jsonConfig = new JsonConfig();
  56. //json数据中不包括id属性
  57. jsonConfig.setExcludes(new String[]{"id"});
  58. //将cityList转成json数组
  59. JSONArray jsonArray = JSONArray.fromObject(cityList,jsonConfig);
  60. jsonString = jsonArray.toString();
  61. System.out.println("jsonString="+jsonString);
  62. pw.write(jsonString);
  63.  
  64. }
  65.  
  66. }

jsp界面获取json数据:

  1. <%@ page language="java" pageEncoding="UTF-8"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  6. </head>
  7. <body>
  8. <select id="provinceID">
  9. <option>选择省份</option>
  10. <option>河南省</option>
  11. <option>福建省</option>
  12. <option>云南省</option>
  13. </select>
  14. <select id="cityID">
  15. <option>选择城市</option>
  16. </select>
  17. <script type="text/javascript">
  18. document.getElementById("provinceID").onchange=function(){
  19. //清空原city列表框
  20. var citySelectElement = document.getElementById("cityID");
  21. var cityElementArray = citySelectElement.options;
  22. var size = cityElementArray.length;
  23. if(size > 1){
  24. //从后向前删除下拉列表框中的东西
  25. for(var i=size-1;i>0;i--){
  26. citySelectElement.removeChild(cityElementArray[i]);
  27. }
  28. }
  29. var province = this[this.selectedIndex].innerHTML;
  30. province = encodeURI(province);
  31. var xhr = createXHR();
  32. xhr.onreadystatechange = function(){
  33. if(xhr.readyState==4){
  34. if(xhr.status==200){
  35. //取得json字符串
  36. var jsonString = xhr.responseText;
  37. //将json字符串转成json对象
  38. var jsonObject = eval("("+jsonString+")");
  39. var size = jsonObject.length;
  40. for(var i=0;i<size;i++){
  41. var city = jsonObject[i].cityName;
  42. var optionElement = document.createElement("option");
  43. optionElement.innerHTML = city;
  44. document.getElementById("cityID").appendChild(optionElement);
  45. }
  46. }
  47. }
  48. }
  49. xhr.open("get","/FirstAjax/CityServlet?time="+new Date().getTime()+"&province="+province);
  50. xhr.send(null);
  51. };
  52.  
  53. //创建一个ajax对象
  54. function createXHR(){
  55. var xhr = null;
  56.  
  57. //假设是IE浏览器
  58. if(window.ActiveXObject){
  59. xhr = new ActiveXObject("microsoft.xmlhttp");
  60. }else{
  61. //非IE浏览器
  62. xhr = new XMLHttpRequest();
  63. }
  64. return xhr;
  65. }
  66. </script>
  67. </body>
  68. </html>



測试效果图:



watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTY2MjMyMA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

  1. 转:JS中生成和解析JSON

    原文地址:JS中生成和解析JSON 1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name ...

  2. JS中生成和解析JSON

    1.JS中生成JSON对象的方法: var json = []; var row1 = {}; row1.id= "1"; row1.name = "jyy"; ...

  3. js写ajax并解析json

    function down(t){  var req = createRequest();  //创建request req.open("GET","selectWord ...

  4. linux使用jq工具解析json

    jq类似一个awk或grep一样的神器,可以方便地在命令行操作json 这里我使用海南万宁的天气接口做演示,地址:http://t.weather.sojson.com/api/weather/cit ...

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

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

    先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...

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

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 使用eval函数来解析,并且使用jquery的ea ...

  8. 关于iOS中几种第三方对XML/JSON数据解析的使用

    Json XML 大数据时代,我们需要从网络中获取海量的新鲜的各种信息,就不免要跟着两个家伙打交道,这是两种结构化的数据交换格式.一般来讲,我们会从网络获取XML或者Json格式的数据,这些数据有着特 ...

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

    JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需. ...

随机推荐

  1. Android编程获取网络连接状态及调用网络配置界面

    获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能. Android平台提供了ConnectivityMan ...

  2. CC2530 外部中断 提醒

    #include "ioCC2530.h" #define uchar unsigned char #define led1    P1_0 #define led2    P1_ ...

  3. java 配置及安装Eclipse

    jdk下载 点我~ Java SE Development Kit 8u20 You must accept the Oracle Binary Code License Agreement for ...

  4. Android 大约Dialog弹出窗口

    直接效果图: 实现步骤: 1.主界面activity_main.xml非常easy,一个button <RelativeLayout xmlns:android="http://sch ...

  5. 使用JS或jQuery模拟鼠标点击a标签事件代码

    原文 使用JS或jQuery模拟鼠标点击a标签事件代码 这篇文章主要介绍了使用JS或jQuery模拟鼠标点击a标签事件代码,需要的朋友可以参考下 <a id="alink" ...

  6. Preference如何增加在activity生命周期监听器

    转载请注明出处:http://blog.csdn.net/droyon/article/details/41313115 本文主要介绍Preference凭什么Activit一些逻辑的生命周期,使. ...

  7. putty中的一些经常使用操作

    (和Linux中操作差点儿相同s) 删除文件夹 rm -rf /home/apache-tomcat-8.0.9 就会把home下的apache-tomcat-8.0.9目录给删除了 删除文件 rm ...

  8. VMware vSphere 服务器虚拟化之十六 桌面虚拟化之VMware Horizon View

       VMware vSphere服务器虚拟化之十六 桌面虚拟化之VMware Horizon View  VMware Horizon View (原VMware View的升级版现在版本5.2)是 ...

  9. Linux下常用操作汇总

    查看linux操作系统位数 (1) 终端输入: file /sbin/init 如 显示: /sbin/init: ELF 32-bit LSB executable, Intel 80386, ve ...

  10. 【原创】leetCodeOj --- Merge k Sorted Lists 解题报告

    题目地址: https://oj.leetcode.com/problems/merge-k-sorted-lists/ 题目内容: /** * Definition for singly-linke ...