Json使用详解(配合Ajax异步请求)
1.Json
1.1概念
JavaScript Object Notation JavaScript对象表示法
代码演示
Person p = new Person();p.setName("牛牛");p.setAge(18);p.setGender("男");var p = {"name":"张三","age":23,"gender":"男"};* json现在多用于存储和交换文本信息的语法* 进行数据的传输* JSON 比 XML 更小、更快,更易解析。
1.2语法
1. 2.1基本规则
数据在名称/值对中:json数据是由键值对构成的
键用引号(单双都行)引起来,也可以不使用引号
值得取值类型:
1. 数字(整数或浮点数)
2. 字符串(在双引号中)
3. 逻辑值(true 或 false)
4. 数组(在方括号中) {"persons":[{},{}]}
5. 对象(在花括号中) {"address":{"province":"陕西"....}}
6. null
数据由逗号分隔:多个键值对由逗号分隔
花括号保存对象:使用{}定义json 格式
方括号保存数组:[]
1.2.2 获取数据:
1. json对象.键名
2. json对象["键名"]
3. 数组对象[索引]
4. 遍历
1.2.3代码演示
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script>//1.定义基本格式var person = {"name": "张三", age: 23, 'gender': true};//获取name的值,两种方式//var name = person.name;var name = person["name"];// alert(name);//alert(person);//2.嵌套格式 {}———> []var persons = {"persons": [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}]};// alert(persons);//获取王五值var name1 = persons.persons[2].name;// alert(name1);//2.嵌套格式 []———> {}var ps = [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}];//获取李四值//alert(ps);alert(ps[1].name);</script>
</head>
<body>
</body>
</html>
2.JSON数据和Java对象的相互转换
JSON解析器:
常见的解析器:Jsonlib,Gson,fastjson,jackson
2.1 jackson
2.1.1JSON转为Java对象
使用步骤:
1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
1. readValue(json字符串数据,Class)
2.1.2 Java对象转换JSON
使用步骤:
- 导入jackson的相关jar包
- 创建Jackson核心对象 ObjectMapper
- 调用ObjectMapper的相关方法进行转换
1. 转换方法:
writeValue(参数1,obj):
参数1:
File:将obj对象转换为JSON字符串,并保存到指定的文件中
Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
writeValueAsString(obj):将对象转为json字符串
2. 注解:
1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值得格式化
@JsonFormat(pattern = "yyyy-MM-dd")
3. 复杂java对象转换
1. List:数组
2. Map:对象格式一致
演示代码:
public class JacksonTest {//Java对象转为JSON字符串@Testpublic void test1() throws Exception {//1.创建Person对象Person p = new Person();p.setName("张三");p.setAge(23);p.setGender("男");//2.创建Jackson的核心对象 ObjectMapperObjectMapper mapper = new ObjectMapper();//3.转换String json = mapper.writeValueAsString(p);System.out.println(json);//{"name":"张三","age":23,"gender":"男"}//writeValue.将数据关联到Writer中mapper.writeValue(new FileWriter("d://b.txt"),p);}@Testpublic void test2() throws Exception {//1.创建Person对象Person p = new Person();p.setName("张三");p.setAge(23);p.setGender("男");p.setBirthday(new Date());//2.转换ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(p);System.out.println(json);//{"name":"张三","age":23,"gender":"男","birthday":1530958029263}//{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"}}@Testpublic void test3() throws Exception {//1.创建Person对象Person p = new Person();p.setName("张三");p.setAge(23);p.setGender("男");p.setBirthday(new Date());Person p1 = new Person();p1.setName("张三");p1.setAge(23);p1.setGender("男");p1.setBirthday(new Date());Person p2 = new Person();p2.setName("张三");p2.setAge(23);p2.setGender("男");p2.setBirthday(new Date());//创建List集合List<Person> ps = new ArrayList<Person>();ps.add(p);ps.add(p1);ps.add(p2);//2.转换ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(ps);// [{},{},{}]//[{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"},
{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"},
{"name":"张三","age":23,"gender":"男","birthday":"2018-07-07"}]System.out.println(json);}@Testpublic void test4() throws Exception {//1.创建map对象Map<String,Object> map = new HashMap<String,Object>();map.put("name","张三");map.put("age",18);map.put("gender","男");//2.转换ObjectMapper mapper = new ObjectMapper();String json = mapper.writeValueAsString(map);//{"name":"张三","age":18,"gender":"男"}System.out.println(json);//{"gender":"男","name":"张三","age":18}}//演示 JSON字符串转为Java对象@Testpublic void test5() throws Exception {//1.初始化JSON字符串String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":18}";//2.创建ObjectMapper对象ObjectMapper mapper = new ObjectMapper();//3.转换为Java对象 Person对象Person person = mapper.readValue(json, Person.class);System.out.println(person);}
}
2.1.3 servlet返回json值方法
//将实体类对象转换为json字符串回传
public void ToJson(HttpServletRequest req, HttpServletResponse resp, Object object) throws ServletException, IOException {//设置响应格式为jsonresp.setContentType("application/json;character=utf-8");String jsonString = JSON.toJSONString(object);// System.out.println(jsonString);resp.getWriter().write(jsonString);
}
2.2 fastjson
2.2.1json字符串转换成java对象
UserDao dao = new UserDaoImpl();
/*** Json字符串转换成java对象* @param path*/
@Override
public void JsonToJava(String path) {File file =new File(path);Reader reader =null;BufferedReader bf=null;try{reader=new FileReader(file);bf=new BufferedReader(reader);//读取一行数据String line=bf.readLine();//解析json字符串,转换成java对象List<Map<String,Object>> list = JSON.parseObject(line,List.class);for (Map<String,Object> map:list) {dao.saveUser(map);}} catch (IOException e) {e.printStackTrace();}finally {try{bf.close();reader.close();} catch (IOException e) {e.printStackTrace();}}
}
2.2.2java对象转换成json字符串
UserDao dao = new UserDaoImpl();
/*** java对象转换成Json字符串* @param path*/
@Override
public void JavaToJson(String path) {File file =new File(path);//json文件可以用记事本打开,所以使用字符缓冲流Writer writer =null;try{writer =new FileWriter(file);//获取所有的user信息保存在java集合对象List<Map<String,Object>> alluser = dao.findAllUser();//将java对象转换成json字符串String str = JSON.toJSONStringWithDateFormat(alluser, "yyyy-MM-dd HH:mm:ss");writer.write(str);} catch (IOException e) {e.printStackTrace();}finally {try{writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}}
}
UserDao dao = new UserDaoImpl();
/*** java对象转换成Json字符串* @param path*/
@Override
public void JavaToJson(String path) {File file =new File(path);//json文件可以用记事本打开,所以使用字符缓冲流Writer writer =null;try{writer =new FileWriter(file);//获取所有的user信息保存在java集合对象List<Map<String,Object>> alluser = dao.findAllUser();//将java对象转换成json字符串String str = JSON.toJSONStringWithDateFormat(alluser, "yyyy-MM-dd HH:mm:ss");writer.write(str);} catch (IOException e) {e.printStackTrace();}finally {try{writer.flush();writer.close();} catch (IOException e) {e.printStackTrace();}}
}
Json使用详解(配合Ajax异步请求)相关推荐
- jquery的ajax异步请求接收返回json数据
jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以.这篇文 ...
- SpringMVC接受JSON参数详解及常见错误总结我改
SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...
- php原生的异步请求,原生JavaScript实现Ajax异步请求
ajax现在是一种非常流行的技术,现在虽然可以利用JQuery或者一些第三方插件甚至微软提供的一些控件可以方面的实现ajax功能,但是明白其原理也是非常重要的,下面是来使用纯javascript实现获 ...
- 从浅到深,带你彻底搞懂AJAX异步请求
在平时开发过程中,异步请求似乎比同步请求出现的频率还要高一些.这是为什么呢?在同步请求时如果对网页的部分内容进行更新时,是不是就必须重载整个页面.这样肯定是不行的,这时就可以采用异步请求来解决此问题. ...
- php 返回字符串给aja,解决ajax异步请求返回的是字符串问题
1.返回结果差异 js获取后打印res.code无结果.因为返回数据格式不正确. php文件添加header头: header('Content-Type:application/json;'); 或 ...
- html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...
/查询单个 function query(id) { $.ajax({ url : "/small/productServlet", async : true, type : &q ...
- java webmethod 参数_java详解Spring接收web请求参数的方式
本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...
- 【JSON】JSON入门详解(二)
文章目录 JSON基础文章荐读 JavaScript创建JSON对象 JSON与XML的那些事 JSON与XML的相同之处 JSON与XML的不同之处 AJAX相关JSON与XML JSON与XML的 ...
- Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数【含代码】)- 案例篇
文章目录 Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数[含代码])- 案例篇 效果截图: 重要代码: 附:全部HTML代码: Ajax异步请求(重渲染DOM元素时,如何自动调 ...
最新文章
- SQLite | Python3导入csv到SQLite3
- YYCache 源码学习(一):YYMemoryCache
- Python基础概念_4_控制流程
- 云起实验室有奖征文,精美好礼等你来领——《我的linux初体验》
- CF940D Alena And The Heater
- yarn报错:error An unexpected error occurred: “https://registry.yarnpkg.com/-/user/org.couchdb。。。
- 03-26 网络流量分析
- soupUI生成webservice客户端代码
- 聊聊jQuery is not defined
- html 定位_定位position
- python猜单词游戏_python 猜单词游戏 代码
- MSP430学习笔记1——msp430概述
- PRD:腾讯会议APP产品需求文档
- 威联通NAS网络存储器快速安装指南——从零搭建一个文件存储平台
- pagefile.sys占用空间过大问题
- 如何让win7在桌面显示ie图标
- 【U8】登录提示缺少根元素
- 360浏览器 | 如何从360浏览器中恢复你的密码
- 基于java的采购管理系统的分析与实现(含源文件)
- vue内容横向循环滚动_在Vue中使用better-scroll实现横向滚动和竖向滚动