一、json概述
json:的全称是 javascript object natation (javascript对象表示法)
json是一种轻量级的 数据交换格式 是基于EMCAScipt的一个子集,是完全独立于语言的文本格式,因此是一种比较理想的数据交换方式
二、json语法规则
1.数据全都保存在键值对中 数据的常用表示形式 key:value
key 使用双引号引起来
value的数据类型
数字(包括整数和浮点数)、字符串(用双引号引起来)、布尔值(true和false)、null
对象 (放在大括号中) 例:{ key:value , key:value ,...................... }
数组 (放在方括号中) 例:[ { key:value },{ key:value },........ ]
2.数据间由都好隔开
key1:value1 , key2:value2
3.大括号表示对象
{ key1:value1,key2:value2.......... }
4.中括号表示数组
[ element1, element2,......... ]
三、json两种基础结构
json只有两种结构
对象:
{ key1:value1 , key1:value1 ,...................... }
数组:
[ { key:value },{ key:value },........ ]
四、json的数据访问
对象数据的访问:
json对象应用.键名称 或者 json对象应用[ "键名称" ]
</pre><p></p><pre>
|
数组元素访问:
数组引用的名称[ 元素下标].键名称
var jsonArray=[ {"name":"张三","age":22,"gender":"男"}, {"name":"李四","age":21,"gender":"男"}, {"name":"露西","age":18,"gender":"女"} ]; for(var x;x<jsonArray.length;x++){ alert(jsonArray[x].name) } |
五、json应用
1.使用json数组填充表格数据
|
2.使用for in循环数组 (参考上部分)
六、在java中使用解析json数据 相互转换
1.在java中使用google-gson解析json
google-gson这个工具比较小巧,性能也不错,不要需要其他类库支持。
实例:
功能:
进行数据的实例化
1.定义一个json格式的字符串
String jsonString="{ 'name':'tom' , 'age':23 , 'gender':'男' }";
2.定义User对象
User u1=new User( "tom" , 23 , "男" );
User u2=new User( "time" , 20 , "女" );
User u3=new User( "lucy" , 18 , "女" );
3.定义一个User数组
User users=new User[ ]{ u1, u2, u3 };
4.定义一个List集合用于保存User元素
List<User> list=new ArrayList<User>();
list.add(u1);
list.add(u2);
list.add(u3);
5.定义一个Map集合用于保存User元素
Map<String,User> umap=new HashMap<String,User>();
umap.put("10000", u1);
umap.put("10000", u2;
umap.put("10000", u3);
6.创建gson对象两种方式
//Gson gs=new GsonBuilder( ).create(); 能够设置日期格式等等
Gson gs=new Gson();
进行java和Gson的相互转换
1.把json字符串转换成User对象
User u=gs.fromJson( jsonString , User.class );
2.把User对象转换为json格式的字符串
jsonString=gs.toJson( u1 );
3.把User数组转化为json格式的字符串
jsonString=gs.toJson( users );
4.把json格式的对象转化为User数组
users=gs.fromJson( jsonString , User[ ].class );
5.把List泛型集合转换为json格式的字符串
jsonString=gs.toJson( list );
6.把json格式的字符串转化为LIst泛型集合
list.clear();//清空list
//对于java的泛型的集合需要使用类型标志
TypeToken<List<User>> token=new TypeToken<List<User>>(){ }; //内部类
Type type=token.getType();
list=gs.fromJson( jsonString , type );
7.把Map泛型集合转换为json格式的字符串
jsonString=gs.toJson( umap );
8.把json格式的字符串转换为Map泛型集合
//对于java的泛型集合使用类型标志
TypeToken<Map<String,User>> token=new TypeToken<Map<String,User>>(){ };
Type type=token.getType();
umap=gs.fromJson( jsonString , type );
数组和LIst转换成json后还是数组
Map转过来后是对象