JSON初步
1.什么是JSON
(1)JSON(Java Script Object Notation)是一种轻量级的数据交换语言,
以文本字符串为基础,且易于让人阅读
XML就是一个重量级的数据交换语言
(2)JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言
2.struts中使用JSON
引入jar包
struts2-json-plugin-2.3.20
struts配置中将包继承自json-default
result中的type属性设置为json
struts如何找到要转为json的数据?
将要转为json的数据设置为实例变量,并提供get方法,struts插件会扫描action中有get方法的实例变量,并转为json格式。如果指定输出哪些变量,在struts文件中配置返回root
<result type="json">
<param name="root">return_map</param>
</result>
3.JSON实现的三级联动
jsp:
<select id="provinceID" onchange="getCity(this)">
<option >选择省份</option>
<option >广东</option>
<option >山东</option>
</select>
<select id="cityID" onchange="getArea(this)">
<option value="">选择城市</option>
</select>
<select id="areaID" >
<option value="">选择区域</option>
</select>
js:
function getCity(selEle)
{
var province = selEle[selEle.selectedIndex].innerHTML;
//清空城市下拉框
var cityEle = document.getElementById("cityID");
cityEle.options.length=1;
//清空区域下拉框
var areaEle = document.getElementById("areaID");
areaEle.options.length=1;
if(province == "选择省份")
return ;
var ajax = createAJAX();
var method = "POST";
var url = "${pageContext.request.contextPath}/getCity?time="
+new Date().getTime();
ajax.open(method,url);
var content = "loc.province="+province;
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
ajax.send(content); ajax.onreadystatechange = function(){
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{ //返回java格式的json,不能被js执行
var jsonJAVA = ajax.responseText;
//将java格式的json转成js格式的json
var jsonJS = eval("("+jsonJAVA+")");
var array = jsonJS.cityList;
for(var i =0;i<array.length;i++){
var option = document.createElement("option");
option.innerHTML = array[i];
cityEle.appendChild(option); } }
}
}
} function getArea(selEle) {
var city = selEle[selEle.selectedIndex].innerHTML;
//清空区域下拉框
var areaEle = document.getElementById("areaID");
areaEle.options.length=1;
if(city == "选择城市") {
return;
}
var ajax = createAJAX();
var method = "POST";
var url = "${pageContext.request.contextPath}/getArea?time="
+new Date().getTime();
ajax.open(method,url);
ajax.setRequestHeader("content-type","application/x-www-form-urlencoded");
var content = "loc.city="+city;
ajax.send(content);
ajax.onreadystatechange = function(){
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{
var jsonJAVA = ajax.responseText; var jsonJS = eval("("+jsonJAVA+")");
var array = jsonJS.areaList;
for(var i=0;i<array.length;i++){
var option = document.createElement("option");
option.innerHTML = array[i];
areaEle.appendChild(option);
}
}
}
} }
struts.xml
<package name="json" extends="json-default">
<action name="getCity" class="jsonAction" method="getCity">
<result name="success" type="json"/>
</action>
<action name="getArea" class="jsonAction" method="getArea">
<result name="success" type="json"/>
</action>
</package>
action:
public class JsonAction extends ActionSupport implements RequestAware{
private Map<String,Object> request;
@Override
public void setRequest(Map<String, Object> map) {
this.request = map;
} private Location loc; public void setLoc(Location loc) {
this.loc = loc;
} public Location getLoc() {
return loc;
}
private List<String> cityList; public List<String> getCityList() {
return cityList;
} // 根据省份获得城市
public String getCity(){
cityList = new ArrayList<String>();
if("广东".equals(loc.getProvince()))
{
cityList.add("广州");
cityList.add("深圳");
cityList.add("珠海");
}
else if("山东".equals(loc.getProvince()))
{
cityList.add("济南");
cityList.add("枣庄");
cityList.add("青岛");
cityList.add("烟台");
}
return SUCCESS;
}
// 根据城市获取区域
private List<String> areaList; public List<String> getAreaList() {
return areaList;
} public String getArea(){
areaList = new ArrayList<String>();
if("枣庄".equals(loc.getCity()))
{
areaList.add("市中区");
areaList.add("山亭区");
areaList.add("台儿庄区");
}
return SUCCESS;
}
}
4.使用第三方工具,将Bean对象、List、Set、Map对象转成JSON
引入jar包 json-lib-2.3-jdk15
@Test
public void test1(){
Location location = new Location();
location.setProvince("山东");
location.setCity("枣庄");
JSONArray jsonArray = JSONArray.fromObject(location);
System.out.println(jsonArray);
//[{"province":"山东","city":"枣庄"}]
}
@Test
public void test2(){
ArrayList<Location> locs = new ArrayList<>();
Location location = new Location();
location.setProvince("山东");
location.setCity("枣庄");
Location location2 = new Location();
location2.setProvince("广东");
location2.setCity("广州");
locs.add(location);
locs.add(location2);
JSONArray jsonArray = JSONArray.fromObject(locs);
System.out.println(jsonArray);
//[{"province":"山东","city":"枣庄"},{"province":"广东","city":"广州"}]
}
@Test
public void test3(){
Set<Location> locs = new LinkedHashSet<>();
Location location = new Location();
location.setProvince("山东");
location.setCity("枣庄");
Location location2 = new Location();
location2.setProvince("广东");
location2.setCity("广州");
locs.add(location);
locs.add(location2);
JSONArray jsonArray = JSONArray.fromObject(locs);
System.out.println(jsonArray);
//[{"province":"山东","city":"枣庄"},{"province":"广东","city":"广州"}]
}
@Test
public void test4(){
Department department = new Department();
department.setId(10);
Employee emp1 = new Employee();
emp1.setEmpName("zhang");
emp1.setSalary(1000);
Employee emp2= new Employee();
emp2.setEmpName("lisi");
emp2.setSalary(2000);
List<Employee> employeeList = new ArrayList<Employee>();
employeeList.add(emp1);
employeeList.add(emp2);
department.setEmps(employeeList);
JSONArray jsonArray = JSONArray.fromObject(department);
System.out.println(jsonArray);
//[{
// "emps":[{"empId":0,"empName":"zhang","dept":null,"salary":1000},
// {"empId":0,"empName":"lisi","dept":null,"salary":2000}],
// "id":10
// }]
}
map转为json
private static void map2json() { List<City> cityList = new ArrayList<City>();
cityList.add(new City(1,"中山"));
cityList.add(new City(2,"佛山")); Map<String,Object> map = new LinkedHashMap<String,Object>();
map.put("total",cityList.size());//表示集合的长度
map.put("rows",cityList);//rows表示集合 JSONArray jSONArray = JSONArray.fromObject(map);
String jsonJAVA = jSONArray.toString();
System.out.println(jsonJAVA);
//[{"total":2,"rows":[{"id":1,"name":"中山"},{"id":2,"name":"佛山"}]}] jsonJAVA = jsonJAVA.substring(1,jsonJAVA.length()-1);
System.out.println(jsonJAVA);
}
5.JSON的特点
(1)在客户端,直接使用JavaScript语言解析JSON,无需第三方jar包
(2)本质上,就是一个文本,只是该文本有特定的书写格式
(3)可以使用第三方工具,将JavaBean对象或者List/Set/Map<JavaBean>对象转成JSON
(4)优点:JSON与XML很相似,但是它更加轻巧,服务器只需发送一个html普通字符串,不用发送复杂的xml格式文档了
(5)缺点:语法过于严谨,初学者可能觉得代码不易读,写错一点都不行
(6)JSON本质上,就是用JS语法写的特殊文本记号,用JS可以直接解析
6.JSON数组及遍历
/*用JSON语法创建一个一维数组,存入string类型的姓名,再迭代*/
var nameArray = ["哈哈","呵呵","嘻嘻","都都"];//js对象
var $nameArray = $(nameArray);//jquery对象
$nameArray.each(function(){
//this表示数组中每一个元素,this属性js对象,this代表string类型
alert(this);
}); //用JSON语法创建一个一维数组,存入object类型的姓名和薪水,再迭代
var nameArray = [
{
name : "哈哈",
sal : 6000
},
{
name : "嘿嘿",
sal : 7000
},
{
name : "笨笨",
sal : 8000
}
];
var $nameArray = $(nameArray);
$nameArray.each(function(){
//this代表object类型
alert(this.name + ":"+this.sal);
});
JSON初步的更多相关文章
- JSON初步认识
一.背景 曾经有一段时间,XML是互联网传输结构化数据的标准.但是XML过于繁琐.冗长.JSON2001年就开始应用了,2006年,DC才把Json提交给IETF. 与XML相比,Json是在Java ...
- python 中的json解析库
当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...
- 怎么在.net里面解析JSON文件?
我在网上搜了好多的文章,讲了很多的方法.但是无一例外的都看不懂...可能是因为我在这方面是个白痴吧... 所幸的是,我搜到了一个博客,写的很是清晰,比我之前看的大片文章写的好多了,在这里:http:/ ...
- 超详细JSON解析步骤
JSON简介 JAVAScript Object Notation是一种轻量级的数据交换格式 具有良好的可读和便于快速编写的特性. 业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了 ...
- 动态加载与插件系统的初步实现(四):解析JSON、扩展Fiddler
按文章结构,这部分应该给出WCFRest项目示例,我想WinForm示例足够详尽了,况且WCFRest还不需要使用插件AppDomain那一套,于是把最近写的Fiddler扩展搬上来吧. Fiddle ...
- android 初步了解应用Gson 解析Json数据
1,因为没有服务器返回数据,对于Tomcat又懒得去配,所以我直接把数据写死到app中 先写一个实体类,便于操作 /** * 实体类 */ public class Person { int id ; ...
- JSON+YAML初步学习+ciscoconfparse
Git git clone 在github.com右上角点击加号创建新的repository 在Linux或Mac命令行下,找到你想存放这个repository的目录,然后git clone 某个re ...
- iOS彩票项目--第七天,初次读取json数据、KVC转模型技巧、运行时字典转模型以及初步对显示网页的操作并且跟踪标签
一.初次读取json数据 二.KVC转模型技巧,这里的技巧主要解决的是字典中的key 与 模型中有的属性对应不起来的时候 的解决办法 <方法1> <方法2>运行时字典转模型,运 ...
- python初步学习-python 模块之 json
json 模块 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写.一般API返回的数据大多是 JSON.XML,如果返回JSON的话,将获取 ...
随机推荐
- iOS开发之 Xcode 6 创建一个Empty Application
参考链接http://jingyan.baidu.com/article/2a138328bd73f2074b134f6d.html Xcode 6 正式版如何创建一个Empty Applicatio ...
- html页面的绝对路径和相对路径
在用springmvc架构开发网站的过程中,离不开开发前台html页面,html经常需要使用本地相关的资源,如:图片,js,css等,一般情况下,我们可以通过使用相对路径的方式来对这些资源进行指向和访 ...
- 20160808_安装JDK7u79
1.将 jdk-7u79-linux-x64.tar.gz 解压,得到文件夹“jdk1.7.0_79” 将 文件夹“jdk1.7.0_79” 复制到 “/usr/java/”下 2.配置环境变量: 文 ...
- 20160805_CentOS6_控制台切换
1. Ctrl + Alt + F1~F6 Ctrl + Alt + F1 是 图形界面(如果装了的话),后面的是 控制台界面 2. 3.
- 熟练使用git命令
git工作流程图: 下面是我整理的常用 Git 命令清单.几个专用名词的译名如下: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remo ...
- Hbase之使用回调函数进行批处理操作
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...
- 【Problem solved】 error C2665: “loadimage”: 2 个重载中没有一个可以转换所有参数类型
选择“项目”菜单->项目属性->配置属性->常规->字符集,改为“未设置”即可.
- url重写后发布出错问题
iis7 配置urlrewriter重写失效的问题 在IIS7下,如果使用微软的 URLRewriter 重写控件则需要在WEB.CONFIG中配置以下信息 第一个配置: <configSect ...
- 学习HTML5之新特性标签一览(详细)
HTML5又2008年诞生,HTML5大致可以等同于=html+css3+javascriptapi.... so --->支持css3强大的选择器和动画以及javascript的新的函数 先来 ...
- java基础学习之 消息对话款
package Dome; import java.awt.event.*; import java.awt.*; import javax.swing.*; public class WindowM ...