首页 > 编程知识 正文

fastjson gson,fastjson 日期格式

时间:2023-05-05 08:02:32 阅读:199089 作者:3498

前言 Json简介

JSON全称JavaScript Object Notation js对象标记语言,实际上就是符合JSON格式规范的字符串,所有的数据都可以转换成JSON,而页面和后台程序直接通过String进行数据交互,当这些String符合JSON格式的话就会很快的被解析还原成原本的数据类型。

在纯Java环境中我们也可以使用Json来处理一些数据,例如对象的序列化,我们可以使用把对象转化成Json在本地存储。

基本的Json数据格式

1.对象类型以及Map的Json格式是:{“key”:”value”,”key2”:”value”}

例如:

User u = new User();u.setUsername(“abc”);u.setPassword(“b”);

对象u转化成Json之后为:{“username”:”abc”,”password”:”b”}

2.数组/list/set 的Json格式是:[元素1,元素2...]

例如:

int[] a = {12,343,23,125,26};

数组a转化成Json之后为:[12,343,23,125,26]

User[] arrayUsers={u,u}

对象数组arrayUsers转化成Json之后为:[{“username”:”abc”,”password”:”b”},{“username”:”abc”,”password”:”b”}]

Fastjson简介

fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。 主要特点:

快速FAST(比其它任何基于Java的解析器和生成器更快,包括耍酷的雪糕) 强大(支持普通JDK类包括任意Java BeanClass、Collection、Map、Date或enum) 零依赖(没有依赖其它任何类库除了JDK)

在使用中我们只需要导入相关的jar包就可以通过fastjson来对Json进行处理了。

Fastjson的使用 基本使用 导入jar包使用相关的方法

本文中使用到的实体类如下

public class Userinfo {String name;int age;String sex;@Overridepublic String toString() {return "Userinfo [name=" + name + ", age=" + age + ", sex=" + sex + "]";}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Userinfo() {super();// TODO Auto-generated constructor stub}public Userinfo(String name, int age, String sex) {super();this.name = name;this.age = age;this.sex = sex;}public Userinfo(String name, int age) {super();this.name = name;this.age = age;}}复制代码 实体类转为Json Userinfo info = new Userinfo("马画藤", 30,"男"); String str_json = JSON.toJSONString(info); // System.out.println("实体转化为Json" + str_json);复制代码

运行结果为:实体转化为Json{"age":30,"name":"马画藤","sex":"男"}

list转Json List<Userinfo> list = new ArrayList<Userinfo>(); Userinfo userinfo1 = new Userinfo("lisi", 15); Userinfo userinfo2 = new Userinfo("wangwu", 16); list.add(userinfo1); list.add(userinfo2); String json = JSON.toJSONString(list, true); System.out.println("List集合转json格式字符串 :" + json);复制代码

toJSONString方法后面的参数中的true代表是否格式化输出结果,不管是true还是fasle对结果是没有影响的,只是格式不一样。

运行结果为:

List集合转json格式字符串 :[{"age":15,"name":"lisi"},{"age":16,"name":"wangwu"}]复制代码 Json转化为字符数组 //定义一个数组 String arrayAyy = "[['大气的薯片',50],null,['jxdbmh',30]]"; //将数组转化为JSONArray JSONArray array = JSONArray.parseArray(arrayAyy); System.out.println("数组:" + array); System.out.println("数组长度: " + array.size()); //通过方法去除空值null Collection nuCon = new Vector(); nuCon.add(null); array.removeAll(nuCon); System.out.println("数组:" + array); System.out.println("数组长度: " + array.size());复制代码

运行结果为:

数组:[["大气的薯片",50],null,["jxdbmh",30]] 数组长度: 3 数组:[["大气的薯片",50],["jxdbmh",30]] 数组长度: 2

复杂数据类型转Json HashMap<String, Object> map = new HashMap<String, Object>(); map.put("username", "zhangsan"); map.put("age", 24); map.put("sex", "男"); // map集合 HashMap<String, Object> temp = new HashMap<String, Object>(); temp.put("name", "xiaohong"); temp.put("age", "23"); map.put("girlInfo", temp); // list集合 List<String> list = new ArrayList<String>(); list.add("爬山"); list.add("骑车"); list.add("旅游"); map.put("hobby", list); String jsonString = JSON.toJSONString(map); System.out.println("复杂数据类型map:" + jsonString); jsonString = JSON.toJSONString(list); System.out.println("复杂数据类型list:" + jsonString);复制代码

运行结果为:

复杂数据类型map:{"sex":"男","username":"zhangsan","age":24,"hobby":["爬山","骑车","旅游"],"girlInfo":{"age":"23","name":"xiaohong"}}

复杂数据类型list:["爬山","骑车","旅游"]

Json反序列为对象 String json = "{"name":"chenggang","age":24}"; Userinfo userInfo = JSON.parseObject(json, Userinfo.class); System.out.println("姓名是:" + userInfo.getName() + ", 年龄是:" + userInfo.getAge());复制代码

运行结果为:

姓名是:chenggang, 年龄是:24

日期格式化 Date date = new Date(); System.out.println("输出毫秒值:" + JSON.toJSONString(date)); System.out.println("默认格式为:" + JSON.toJSONString(date, SerializerFeature.WriteDateUseDateFormat)); System.out.println("自定义日期:" + JSON.toJSONStringWithDateFormat(date, "yyyy-MM-dd", SerializerFeature.WriteDateUseDateFormat));复制代码

运行结果为:

输出毫秒值:1534732296011

默认格式为:"2018-08-20 10:31:36"

自定义日期:"2018-08-20"

我不能保证每一个地方都是对的,但是可以保证每一句话,每一行代码都是经过推敲和斟酌的。希望每一篇文章背后都是自己追求纯粹技术人生的态度。 永远相信美好的事情即将发生。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。