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

使用步骤:

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象 ObjectMapper
  3. 调用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异步请求)相关推荐

  1. jquery的ajax异步请求接收返回json数据

    jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以.这篇文 ...

  2. SpringMVC接受JSON参数详解及常见错误总结我改

    SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP.所以把一个练手项目的前 ...

  3. php原生的异步请求,原生JavaScript实现Ajax异步请求

    ajax现在是一种非常流行的技术,现在虽然可以利用JQuery或者一些第三方插件甚至微软提供的一些控件可以方面的实现ajax功能,但是明白其原理也是非常重要的,下面是来使用纯javascript实现获 ...

  4. 从浅到深,带你彻底搞懂AJAX异步请求

    在平时开发过程中,异步请求似乎比同步请求出现的频率还要高一些.这是为什么呢?在同步请求时如果对网页的部分内容进行更新时,是不是就必须重载整个页面.这样肯定是不行的,这时就可以采用异步请求来解决此问题. ...

  5. php 返回字符串给aja,解决ajax异步请求返回的是字符串问题

    1.返回结果差异 js获取后打印res.code无结果.因为返回数据格式不正确. php文件添加header头: header('Content-Type:application/json;'); 或 ...

  6. html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...

    /查询单个 function query(id) { $.ajax({ url : "/small/productServlet", async : true, type : &q ...

  7. java webmethod 参数_java详解Spring接收web请求参数的方式

    本篇文章给大家带来的内容是java详解Spring接收web请求参数的方式 .有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所帮助. 1 查询参数 请求格式:url?参数1=值1&参 ...

  8. 【JSON】JSON入门详解(二)

    文章目录 JSON基础文章荐读 JavaScript创建JSON对象 JSON与XML的那些事 JSON与XML的相同之处 JSON与XML的不同之处 AJAX相关JSON与XML JSON与XML的 ...

  9. Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数【含代码】)- 案例篇

    文章目录 Ajax异步请求(重渲染DOM元素时,如何自动调用并执行JS自定义函数[含代码])- 案例篇 效果截图: 重要代码: 附:全部HTML代码: Ajax异步请求(重渲染DOM元素时,如何自动调 ...

最新文章

  1. SQLite | Python3导入csv到SQLite3
  2. YYCache 源码学习(一):YYMemoryCache
  3. Python基础概念_4_控制流程
  4. 云起实验室有奖征文,精美好礼等你来领——《我的linux初体验》
  5. CF940D Alena And The Heater
  6. yarn报错:error An unexpected error occurred: “https://registry.yarnpkg.com/-/user/org.couchdb。。。
  7. 03-26 网络流量分析
  8. soupUI生成webservice客户端代码
  9. 聊聊jQuery is not defined
  10. html 定位_定位position
  11. python猜单词游戏_python 猜单词游戏 代码
  12. MSP430学习笔记1——msp430概述
  13. PRD:腾讯会议APP产品需求文档
  14. 威联通NAS网络存储器快速安装指南——从零搭建一个文件存储平台
  15. pagefile.sys占用空间过大问题
  16. 如何让win7在桌面显示ie图标
  17. 【U8】登录提示缺少根元素
  18. 360浏览器 | 如何从360浏览器中恢复你的密码
  19. 基于java的采购管理系统的分析与实现(含源文件)
  20. vue内容横向循环滚动_在Vue中使用better-scroll实现横向滚动和竖向滚动

热门文章

  1. 笔记本屏幕颜色校证,有效解决屏幕发白、刺眼问题
  2. '\0'和\0的区别
  3. Python入门习题大全——词汇表2
  4. 2023年北京师范大学应用统计考研上岸前辈备考经验指导
  5. 基于web服务的文件共享平台pydio搭建教程
  6. VTK_Learning_交互与拾取_单位拾取
  7. 一款简洁的导航网源码
  8. 地图坐标系之间的转换(百度地图、GCJ、WGS84)
  9. 利用OpenCV从图片中提取矩形并标注坐标(室内平面地图)——(一)
  10. Python实现图像的手绘效果