本文是学习Java时所记录的学习笔记,本节记录了JSON的相关知识,需要掌握JSON的书写格式,懂得JSON与String类型的转换。

文章目录

  • JSON简介
    • 什么是JSON?
    • JSON语法规则
    • JSON语法示例
  • JSON的具体实现
    • JavaScript与JSON(前端处理JSON)
      • JavaScript中使用JSON对象的方法
      • JavaScript中字符串与JSON对象互转的方法
    • Java与JSON(后端处理JSON)
      • 通过JSON工具包处理JSON数据
      • FastJSON需要的JAR包
      • Fastjson工具使用方法

JSON简介

什么是JSON?

JavaScript Object Notation(JavaScript对象表示法),是一个轻量级的文本数据交换格式,数据的一种表达方式。独立于语言,具有自我描述性,容易理解。

因为JSON的结构简洁清晰,所以通常JavaScript和web服务器后端数据交互的时候会采用JSON格式进行传输。

需要能够读懂JSON格式的内容,掌握JSON转String和String转JSON。

JSON语法规则

  • 数据由键/值成对出现,由逗号分隔
  • 大括号({})代表一个完整的对象,拥有多个键值对
  • 中括号([])保存数组,多个对象之间使用逗号分隔

JSON语法示例

{"sites":[{"name":"百度","url":"www.baidu.com"},{"name":"淘宝","url":"www.taobao.com"},{"name":"网易","url":"www.163.com"}]
}

JSON的具体实现

JavaScript与JSON(前端处理JSON)

JavaScript中使用JSON对象的方法

在JavaScript中,可以直接把JSON对象当做普通对象使用。

JavaScript中字符串与JSON对象互转的方法
JS中的方法 说明 示例
JSON.parse() 传入字符串,把字符串转成json JSON.parse(str)
JSON.stringify() 传入对象,把JSON对象转为字符串 JSON.stringify(json)

Java与JSON(后端处理JSON)

通过JSON工具包处理JSON数据

把Java对象转换为JSON,或者JSON转换为Java对象的第三方组件,称为JSON工具包。常用的JSON工具包:

  • FastJSON(国内阿里巴巴)
  • Jackson(国外老牌)
  • Gson(谷歌开发)
  • Json-lib(开源平台)。
FastJSON需要的JAR包

jastjson.jar

官方网站:www.github.com 搜索jastjson

Fastjson工具使用方法

引用JAR包后可以直接使用

方法 说明 返回值 示例
toJSONString() 类方法,把Java对象转换为JSON字符换 String
parseObject() 类方法,把JSON字符串转换为Java对象 JSON.parseObject(str,Employee.class)
toJSONString() 将常用数据结构转换为JSON字符串 String
parseArray() 将JSON字符串转换为数组对象 List JSON.paarseArray(jsonstr,Employee.class)

fastjson工具的@JsonField注解

  • 在封装对象时,使用fastjson提供的@JsonField注解,可以定义对象中某个全局变量在JSON转换时采用注解属性所代表的含义。

  • 例如:在employee.java类中的uname全局变量上一行使用@JSONField(name=“UserName”),则操作fastjson对该类的对象转换成JSON格式时,会把uname的改为UserName。

  • 以下是@JSONField注解可选的属性:

    注解属性 说明 示例
    name 给当前变量起别名 @JSONField(name=“tom”)
    format 可用于格式化日期 @JSONField(format=“yyyy-MM-dd HH:mm:ss”)
    serialize 表示是否对该变量序列化,false为不序列化 @JSONField(serialize=false)
  • 案例

    • Employee.java类
    public class Employee {private Integer empno;private String ename;private String job;//@JSONField(format="yyyy-MM-dd HH:mm:ss SSS")@JSONField(name = "hiredate" , format="yyyy-MM-dd")private Date hdate;private Float salary;@JSONField(serialize = false)private String dname;//以下省略部分内容
    }
    
    • FastJsonDemo.java类
    public class FastJsonDemo {
    public static void main(String[] args) {Employee employee = new Employee();employee.setEmpno(4488);employee.setEname("张三");employee.setJob("程序员");employee.setSalary(10000f);employee.setDname("开发部");Calendar c = Calendar.getInstance();c.set(2019, 0, 30, 0, 0, 0);employee.setHdate(c.getTime());String json = JSON.toJSONString(employee);System.out.println(json);Employee emp = JSON.parseObject(json, Employee.class);System.out.println(emp.getEname());
    }
    

JavaWeb学习笔记——JSON详解相关推荐

  1. python学习笔记 正则表达式 详解2

    python学习笔记 正则表达式 详解 行定位符 行定位符就是用来描述子串的边界."^"表示行的开始:"$"表示行的结尾 ^tm:匹配以子串tm的开始位置是行头 ...

  2. IOS开发学习笔记-----UILabel 详解

    IOS开发学习笔记-----UILabel 详解 01 //创建uilabel 02 UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMa ...

  3. wringPi 初始化GPIO 为上拉_敏矽微电子Cortex-M0学习笔记04-GPIO详解及应用实例

    前面我们已经对敏矽微电子的基于cortex m0内核的ME32F030R8T6的基本功能做了介绍,然后详细讲解了开发环境MDK的安装,pack包的安装,工程的建立及程序的仿真,紧接着讲解了ME32F0 ...

  4. 关于ClassLoader的学习笔记,详解版

    ClassLoader 详解 ClassLoader 做什么的? 延迟加载 各司其职 ClassLoader 传递性 双亲委派 Class.forName 自定义加载器 Class.forName v ...

  5. DNS 学习笔记之三- 详解DNS的资源记录

    <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />       最 ...

  6. ctfhub技能书+历年真题学习笔记(详解)

    Web Web前置技能 HTTP协议 请求方式 题目:HTTP Method is GET Use CTF**B Method, I will give you flag. Hint: If you ...

  7. Linux实操篇——实用指令学习笔记(详解)

    9.3帮助指令 9.3.1介绍 当我们对某个指令不熟悉时,我们可以使用Linux提供的帮助指令来了解这个指令的使用方法. 9.3.2man 获得帮助信息 基本语法 man[命令或配置文件](功能描述: ...

  8. 十一、MySQL视图学习笔记(详解)

    视图 含义:理解成一张虚拟的表,和普通表一样使用 mysql5.1版本出现的新特性,是通过表动态生成的数据 比如:舞蹈班和普通班级的对比 视图和表的区别: 名称 创建语法的关键字 使用 占用物理空间 ...

  9. 进厂手册:Git 学习笔记(详解命令)

    文章目录 git 对象 通过git对象进行文件的保存 git对象的缺点 树对象 构建树对象 提交对象 高层命令 工作区的文件状态 git reset hard 咋用以及用错了怎么恢复 git chec ...

最新文章

  1. centos7删除符号链接_技术|在 Linux 中怎样移除(删除)符号链接
  2. linux进程间通信-管道
  3. include element into ABAP word document
  4. 堆和栈的联系与区别(转贴)
  5. #开工新姿势#开启一年新征程,云社区叫你来充电啦!
  6. tm是什么域名_入驻天猫,需要什么条件?
  7. VMware虚拟机(Ubuntu)添加物理串口
  8. 3dmax:3dmax三维VR渲染设置之高级灯光渲染(光度学—自由灯光、目标灯光、天空门户)图文教程之详细攻略
  9. sqlserver 数据库文件损坏、数据库可疑修复处理
  10. hdu1175连连看
  11. 【跟我一起学Linux之Ubuntu】-概述与安装配置笔记
  12. mac误删除文件恢复,mac文件丢失如何找回
  13. 【抽象代数】环、子环、理想、商环、环的同态
  14. .csv是什么文件格式,什么软件可以打开?xls与csv文件是什么区别?功能和作用上有什么不同?
  15. SQL语句中引号(')、quotedstr()、('')、format()在SQL语句中的用法
  16. 奇怪的日常 [ 2 ]:Python下合成萝莉/御姐音
  17. 【编程语言】函数式编程 Functional Programming
  18. Java内省用法_java内省机制及PropertyUtils使用方法
  19. 文章摘要智能提取【基于BERT技术】
  20. 惠普DV2000 V3000笔记本散热不良温度过高简单改造见效降温

热门文章

  1. ipad分屏功能怎么开启_iOS 14新功能爆料汇总:安卓用户似曾相识
  2. 分享一个GO语言CMS后台管理系统
  3. linear-gradient的用法详解
  4. Juniper防火墙系列-04-Juniper防火墙IPSec VPN的配置
  5. openlayers 雷达回波的实现
  6. Android wifi探究二:Wifi framework层源码分析
  7. 起飞的 python!!!
  8. 供水水泵控制器PLC如何在线监控和远程维护
  9. 2020大众点评数据统计分析 大众点评数据下载
  10. 【转】几种作图软件使用感言