一、说在前面

 昨天 完成了体温统计APP的编写
今天 学习json数据结构

二、学习总结

1、json数据结构

1)什么是json:

  JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

2)json的数据格式(json的结构有两种结构)

第一种:对象结构:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,key的类型为字符串,value的类型可以是 数字、字符串、数组、对象几种。

示例:描述一个用户:  {"id":100,"username":"张三","age":28,"addr":"天津"}

第二种:数组结构:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

(注意:在实际开发中,对象结构和数组结构会相互嵌套,相互包含)

3)json的转换工具

  在实际的开发中,我j们经常会使用json串作为数据传输的载体,例如浏览器端页面中的js与服务端的数据交互,android/ios移动端与服务端的数据交互都大量使用json,但发现使用java代码手动拼接json串是一个很耗时很繁琐的事情,所以一批json的自动转换的工具出现了。即可以自动的将对象、数组、集合等转换成json串,也可以将一个json串转成对象、数组和集合。

4)常用的转换工具:

1> jsonlib:是一个java类库,开发时需要导入6个jar包

commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
ezmorph-1.0.6.jar
json-lib-2.4-jdk15.jar

2>  Gson:google的产品 很多企业都在使用  (我也在用)

3> FastJson:阿里巴巴技术团队的产品 号称是最快的json转换工具

三、案例演示

1、单个对象

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>json01</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">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<ul>
<li id="bj" name="beijing">北京</li>
</ul>
</body> <script language="JavaScript">
/**
* 案例一
* {key:value,key:value}
*
* class Person{
* String firstname = "张";
* String lastname = "三丰";
* Integer age = 100;
* }
*
* Person p = new Person();
* System.out.println(p.firstname);
*/ var person = {"firstname":"张","lastname":"三丰","age":100}; //取出lastname
alert(person.lastname);
//取出age
alert(person.age); </script>
</html>

2、数组

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>insertBefore.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">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<ul>
<li id="bj" name="beijing">北京</li>
</ul>
</body> <script language="JavaScript">
/**
* 案例四
* {
* "param1":[{key:value,key:value},{key:value,key:value}],
* "param2":[{key:value,key:value},{key:value,key:value}],
* "param3":[{key:value,key:value},{key:value,key:value}]
* }
*
*
*/
var json = {
"baobao":[
{"name":"小双","age":28,"addr":"扬州"},
{"name":"建宁","age":18,"addr":"紫禁城"},
{"name":"阿珂","age":10,"addr":"山西"},
],
"haohao":[
{"name":"张爽","age":25,"addr":"吉林"},
{"name":"舒洁","age":23,"addr":"赤峰"}
]
}; alert(json.haohao[1].name); </script>
</html>

3、数组对象混合

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>insertBefore.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">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<ul>
<li id="bj" name="beijing">北京</li>
</ul>
</body> <script language="JavaScript">
/**
* 案例五
* {
* "param1":"value1",
* "param2":{},
* "param3":[{key:value,key:value},{key:value,key:value}]
* }
*
*
*/ var json = {
"key1":"value1",
"key2":{"firstname":"张","lastname":"三丰","age":100},
"key3":[
{"name":"小双","age":28,"addr":"扬州"},
{"name":"建宁","age":18,"addr":"紫禁城"},
{"name":"阿珂","age":10,"addr":"山西"},
]
}; alert(json.key2.lastname); alert(json.key3[2].name); </script>
</html>

最新文章

  1. backbone实例01
  2. QRTZ_表注释
  3. [ASE][Daily Scrum]11.19
  4. 灵魂有香气的女子IOS版本APP,近期将考虑开放源代码
  5. 使用phantomjs实现highcharts等报表通过邮件发送
  6. 直接下载Google Play市场的APK
  7. Android 滑动菜单SlidingMenu
  8. SECURITY_ATTRIBUTES 设置低权限
  9. 基于SUSE Linux做NFS文件挂载
  10. 文件存储B+树
  11. 详解EBS接口开发之销售订单导入
  12. DensityUtil【尺寸转换工具类(px、dp互相转换)】
  13. .NET应用加载容器Glue4Net
  14. 第五节:从源码的角度理解各种Result(ActionResult、JsonResult、JavaScriptResult等)
  15. idea 用tomcat运行javaWeb
  16. 《http权威指南》读书笔记9
  17. python 函数及变量作用域及装饰器decorator @详解
  18. WPF:数据和行为
  19. base64encode 编码原理
  20. form中的button按钮在IE11中自动提交表单问题导致弹出框关闭之后表单被重置

热门文章

  1. Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
  2. JS - 处理浏览器兼容之 event
  3. C++11常用特性介绍——nullptr关键字及用法
  4. 移动端300毫秒事件响应延迟解决方法[fastclick]
  5. 114、Java中String类之字符串文本复杂二次拆分
  6. 算法设计与分析 - 李春葆 - 第二版 - pdf-&gt;word v1
  7. python读取文件用b模式读取
  8. leetcode209 Minimum Size Subarray Sum
  9. 吴裕雄--天生自然HADOOP操作实验学习笔记:协同过滤算法
  10. Q12问题