json与两种格式
与页面交互
一种轻量级的数据交换格式、基于纯文本的
json:基于javascript语法的一个子集
在javascript中单引号和双引号没有区别
json表示数组:[“张三”,“李四”,“王五”]
**json表示对象:{}**属性:值
可以是对象、数组、布尔(true,false)、数值、字符串、Object、null
stu1:{id:1,name:“小红”,age:18}
json在线格式转化网址,点此进入
网址:https://www.bejson.com/
提供json工具fastjson-1.2.49(文末有百度网盘链接)
json的作用
java对象转json字符串
如下图所示:
json字符串转java对象
如下图所示:
javascript脚本转对象:eval()方法
集合对象转json
Student student2=new Student(2,"小明",20,'男');
Student student3=new Student(3,"小张",21,'男');
Student student4=new Student(4,"小李",22,'男');
List<Student>list =new ArrayList<Student>();
list.add(student);
list.add(student2);
list.add(student3);
list.add(student4);
//集合转json
response.getWriter().write(JSON.toJSONString(list));
list转json字符串:
map转json字符串:
HashMap<Integer,Student> map=new HashMap();
map.put(student.getId(),student);
map.put(student2.getId(),student2);
map.put(student3.getId(),student3);
map.put(student4.getId(),student4);
//list集合转json:
response.getWriter().write(JSON.toJSONString(list));
//map集合转json:
response.getWriter().write(JSON.toJSONString(map));
区别:
由于map由键值对组成,故输出格式为{键:{值},键:{值}}
而list集合的输出格式为[{对象1},{对象2},{对象3},{对象4}]
Json转java对象
//2json转对象
String temp="{id:2,name:'小明',age:20,sex:'男'}";
Student student2;
student2=JSON.parseObject(temp, Student.class);
//student2=JSON.parseObject(temp, new Student().getClass());//两种
System.out.println(student2);
效果如下:
Json转集合对象
String temp=request.getParameter("data");
//List<Student> list2=JSON.parseObject(temp,List.class);//此方法得到的是JSONObject类型,并不是Student类型
//System.out.println(list2);
List<JSONObject> list2=JSON.parseObject(temp,List.class);
List<Student> list3=new ArrayList<>();
for (JSONObject temp2 : list2) {
Student stu=JSONObject.parseObject(temp2.toJSONString(), Student.class);
list3.add(stu);
}
System.out.println(list3);
当在url中输入一条json数据后回车将会打印出如下的效果
补充
关于强制类型转换:可以发生在父子类中,有从属关系
JSONObject转对象类型:Student是类名,不是类
JSONObject.parseObject(temp2.toJSONString(),Student.class);
不复写toString()方法的话,默认打印内存中的地址