Json -- 语法和示例,javascript 解析Json
1. 语法
规则如下:
1)映射用冒号(“:”)表示。名称:值
2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2
3)映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}
4)并列数据的集合(数组)用方括号(“[]”)表示。
[
{名称1:值,名称2:值2},
{名称1:值,名称2:值2}
]
5 元素值可具有的类型:string,number, object, array, true, false, null
2. 解析Json
会把一个字符串当作它的参数。然后这个字符串会被当作JavaScript代码来执行。因为JSON
的字符串就是由 JavaScript代码构成的,所以它本身是可执行的.
例子一:
<script language="JavaScript">
var people ={"firstName": "Brett", "lastName":"McLaughlin", email": "brett@newInstance.com" };
alert(people.firstName);
alert(people.lastName);
alert(people.email);
</script>
例子二:
<script language="JavaScript">
var people =[
{"firstName": "Brett","email": "brett@newInstance.com" },
{"firstName": "Mary","email": "mary@newInstance.com" }
]; alert(people[0].firstName);
alert(people[0].email);
alert(people[1].firstName);
alert(people[1].email);
</script>
例子三:
<script language="JavaScript">
var people ={
"programmers": [
{ "firstName": "Brett", "email": "brett@newInstance.com" },
{ "firstName": "Jason", "email": "jason@servlets.com" },
{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
],
"authors": [
{ "firstName": "Isaac", "genre": "science fiction" },
{ "firstName": "Tad", "genre": "fantasy" },
{ "firstName": "Frank", "genre": "christian fiction" }
],
"musicians": [
{ "firstName": "Eric", "instrument": "guitar" },
{ "firstName": "Sergei", "instrument": "piano" }
]};
window.alert(people.programmers[1].firstName);
window.alert(people.musicians[1].instrument);
</script>
3. Json的优缺点
XML 很相似,但是它更加灵巧。
4. 示例:
bean对象 province.java
public class Province { private Integer id;
private String province;
public Province(Integer id,String province) {
this.id = id;
this.province = province;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
}
处理请求的JsonServlet.java,JSONArray 需要导入json的第三方包json-lib-2.3-jdk15.jar,及其依赖包。
public class JsonServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter(); //利用javabean来模拟数据库
Province p1 = new Province(1, "吉林省");
Province p2 = new Province(2, "辽宁省");
Province p3 = new Province(3, "山东省"); List<Province> list = new ArrayList<Province>(); list.add(p1);
list.add(p2);
list.add(p3); JSONArray json = JSONArray.fromObject(list); //String json = "[{'province':'吉林省'},{'province':'辽宁省'},{'province':'山东省'}]"; out.println(json.toString()); //响应始终以字符串形式 }
}
显示页面 json.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>form.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<select id="province" name="province">
<option value="">请选择....</option>
</select>
<select id="city" name="city">
<option value="">请选择.....</option>
</select>
</body>
<script language="JavaScript">
window.onload = function(){
var xhr = ajaxFunction(); xhr.onreadystatechange = function(){
if(xhr.readyState==4){
if(xhr.status==200){
var data = xhr.responseText; alert(data);
/*
* 利用eval()函数转换成json数据格式,传入eval()函数的内容还是文本内容
* * 利用eval()函数进行转换json数据格式,需要利用"()"将传入的参数进行包裹
* * 如果不利用"()"进行包裹,传入的内容是"{}",这时eval()函数会将其识别成"空的语句块"
* * 如果利用"()"进行包裹,传入的内容是"{}",这时eval()函数会强行将其转换成json格式
*
* * 加上"()"一定转换成功
*/
var json = eval("("+data+")"); for(var i=0;i<json.length;i++){
var provinceValue = json[i].province; var optionElement = document.createElement("option");
optionElement.setAttribute("value",provinceValue);
var provinceText = document.createTextNode(provinceValue);
optionElement.appendChild(provinceText); var provinceElement = document.getElementById("province");
provinceElement.appendChild(optionElement);
}
}
}
} xhr.open("post","../jsonServlet?timeStamp="+new Date().getTime(),true); xhr.send(null);
} function ajaxFunction(){
var xmlHttp;
try{ // Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e){
try{// Internet Explorer
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){}
}
} return xmlHttp;
} </script>
</html>
Json -- 语法和示例,javascript 解析Json的更多相关文章
- JavaScript解析json
后台数据经常以json数据格式传回前台,解析当然首选JSON对象. JSON对象有两个方法,使用JSON.parse(str)可以将json字符串解析成js中的对象. var o = JSON.par ...
- json进阶(一)js读取解析JSON类型数据
js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...
- 【C#】使用Json.NET(newtonsoft)解析Json
最近做的WPF项目中,需要一个C#下的Json实现. 在Json的官网http://www.json.org/中查找,可见C#的Json工具主要有如下: 尝试了排在最前面的fastJSON,反序列化时 ...
- JSON.parse 与 eval() 对于解析json的问题
1.eval()与JSOn.parse的不同 eval() var c = 1; //全局变量 var jsonstr1 = '{"name":"a",&quo ...
- 将JSON格式数据转换为javascript对象 JSON.parse()
<html><body><h2>通过 JSON 字符串来创建对象</h3><p>First Name: <span id=" ...
- VBA中使用JavaScript脚本语言解析JSON数据
JSON:JavaScript 对象表示法(JavaScript Object Notation) 和xml相似,都是文本形式(保存在文本文件中或字符串等形式),比如: jsstr = {" ...
- 小白科普之JavaScript的JSON
一.对json的理解 json是一种数据格式,不是一种编程语言,json并不从属于javascript. json的语法可以表示以下三种类型的值 1)简单值 ...
- C++解析JSON之JsonCPP
一.JSON简介 JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读.编写.解析. JSON由两种基本结构构成: )"名称/值" ...
- jquery遍历筛选数组的几种方法和遍历解析json对象
jquery grep()筛选遍历数组 $().ready( function(){ var array = [1,2,3,4,5,6,7,8,9]; var fil ...
随机推荐
- vmware key
VMware vRealize Suite 2017 Enterprise N04CL-09H9H-J89DJ-0KCH6-90N0J VMware vRealize Operations Man ...
- springmvc的一个错误
初学ssm,碰到一个错误,非注解的就没错,注解的就错了 找了半天,终于发现错误,真的很傻比啊,导入的springframework版本不一致... 都导入4.3.18版本的即可...
- 【JS】JS中对于this的理解
一.对this的产生原因分析和了解 第一:this指的是函数运行时所在的环境(即调用的对象). 第二:JavaScript 语言之所以有this的设计,跟内存里面的数据结构有关系(内存存储详细理解参考 ...
- 第5章 IDA Pro实验题
Question: 1.DLLMain的地址是什么? 2.使用import窗口并浏览到gethostbyname,导入函数定位到什么位置 3.有多少函数调用了gethostbyname? 4.将精力放 ...
- Powershell调用RemoteExchange.ps1
If ((Get-PSSnapin | where {$_.Name -match "Microsoft.Exchange.Management.PowerShell.E2010" ...
- php中get_cfg_var()和ini_get()的用法及区别
php里get_cfg_var()和ini_get()都是取得配置值的函数,当你需要获取php.ini里的某个选项的配置值时,这两个函数都都可以使用,得到的结果是一样的. 不过,get_cfg_var ...
- SpringMVC 之数据转换和国际化
1. 数据绑定流程 SpringMVC 主框架将 ServletRequest 对象及目标方法的入参实例传递给 WebDataBinderFactory 实例,以创建 DataBinder 实例对象; ...
- django自带过滤器大全
1.可以通过过滤器来修改变量的显示,过滤器的形式是:{{ variable | filter }},管道符号'|'代表使用过滤器 2.过滤器能够采用链式的方式使用,例如:{{ text | escap ...
- 我的Android进阶之旅------>如何解决Android 5.0中出现的警告: Service Intent must be explicit:
我的Android进阶之旅-->如何解决Android 5.0中出现的警告: java.lang.IllegalArgumentException: Service Intent must be ...
- Deep learning Reading List
本文来自:http://jmozah.github.io/links/ Following is a growing list of some of the materials i found on ...