java处理json类型数据--阿里巴巴fastjson api常用方法实战
fastjson介绍
最近工作上经常需要解析json类型数据以及java对象到json类型的互转,特地研究了下阿里巴巴的fastjson,这个是国内用的
比较多的json转换api,还有其他的入jackson,谷歌的Gson,后续我再介绍。
废话少说,上例子。
使用方式
1)下载jar包
2)maven配置
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.44</version>
</dependency>
例子
涉及3个类:User,Organization,FastJsonTest
User类
package com.dylan.json.entity;
/**
* 用户实体
*
* @author xusucheng
* @create 2018-01-20
**/
public class User {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Organization类
package com.dylan.json.entity;
import java.util.ArrayList;
import java.util.List;
/**
* 部门实体
*
* @author xusucheng
* @create 2018-01-20
**/
public class Organization {
private int id;
private String name;
private List<User> userList = new ArrayList<User>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<User> getUserList() {
return userList;
}
public void setUserList(List<User> userList) {
this.userList = userList;
}
}
FastJsonTest类
package com.dylan.json.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.dylan.json.entity.Organization;
import com.dylan.json.entity.User;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 测试阿里巴巴fastjson
*
* @author xusucheng
* @create 2018-01-20
*
* //下面是FastJson的简介:常用的方法!
* // Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
* // public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
* // public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
* // public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
* // public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
* // public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
* // public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
* // public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
* // public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)
**/
public class FastJsonTest {
public static void main(String[] args) {
//json字符串转换为JSONObject
jsonToJSONObject();
//json字符串转换为bean
jsonToBean();
//bean转json字符串
beanToJson();
//map转换为json字符串
mapToJson();
//json字符串转JSONArray
jsonToJSONArray();
}
private static void beanToJson() {
System.out.println("------------------beanToJson------------------");
User user = new User();
user.setId(1);
user.setName("钱多多");
String json = JSON.toJSONString(user,true);
System.out.println(json);
}
private static void jsonToJSONArray() {
System.out.println("------------------jsonToJSONArray------------------");
String json="{users:[{\"id\":1,\"name\":\"Dylan\"},{\"id\":2,\"name\":\"Jack\"}]}";
JSONObject jo = JSON.parseObject(json);
String jsonArray = jo.get("users").toString();
System.out.println(jsonArray);
List<User> userList = JSON.parseArray(jsonArray,User.class);
for (User user:userList){
System.out.println(user.getId()+":"+user.getName());
}
}
//以下是静态方法
private static void jsonToJSONObject() {
System.out.println("------------------jsonToJSONObject-----------------");
String json = "{\"id\":1,\"name\":\"Dylan\"}";
JSONObject jsonObject = JSON.parseObject(json);
System.out.println(jsonObject.getInteger("id")+":"+jsonObject.getString("name"));
}
private static void jsonToBean(){
System.out.println("------------------jsonToBean-------------------------");
String json = "{\"id\":1,\"name\":\"dylan\"}";
User user = JSON.parseObject(json,User.class);
System.out.println(user.getId()+":"+user.getName());
}
private static void mapToJson(){
System.out.println("-------------------mapToJson--------------------------");
Organization organization = new Organization();
organization.setId(1);
organization.setName("研发部");
User user1 = new User();
user1.setId(1);
user1.setName("钱多多");
User user2 = new User();
user2.setId(2);
user2.setName("穷不怕");
organization.getUserList().add(user1);
organization.getUserList().add(user2);
Map<String,Object> orgMap = new HashMap<String,Object>();
orgMap.put("orgId",organization.getId());
orgMap.put("orgName",organization.getName());
orgMap.put("userList",organization.getUserList());
String json = JSON.toJSONString(orgMap);
System.out.println(json);
}
}
说明
后续如果碰到有其他需求我会在此基础上继续添加,敬请期待!
java处理json类型数据--阿里巴巴fastjson api常用方法实战的更多相关文章
- Struts2+Jquery实现ajax并返回json类型数据
来源于:http://my.oschina.net/simpleton/blog/139212 摘要 主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的 ...
- 转载:Struts2+Jquery实现ajax并返回json类型数据
摘要: 主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的数据,并转换为json类型模式数据 3.配置struts.xml文件 4.页面脚本接受并处理数 ...
- json进阶(一)js读取解析JSON类型数据
js读取解析JSON类型数据 一.什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式,同 ...
- MySQL JSON 类型数据操作
1.Java 中动态扩展字段,会导致数据库表被锁,在MySQL 5.7.8版本之前,因为MySQL不能直接操作JSON类型数据,可以将一个字段设定成varchar类型,里面存放JSON格式数据,这样在 ...
- Android java传递string类型数据给C
本文接着实现<Android java传递int类型数据给C>的还未实现的方法: public native String sayHelloInC(String s); 先贴一个工具方法, ...
- Android java传递int类型数据给C
本文根据<Android jni简便开发流程>中的开发流程来实现一个java传递int类型数据给C 新建项目,进行简单的布局 <LinearLayout xmlns:android= ...
- js读取解析JSON类型数据【申明:来源于网络】
js读取解析JSON类型数据[申明:来源于网络] 地址:http://blog.csdn.net/sunhuaqiang1/article/details/47026841
- C#操作json类型数据
将对象序列化为 JavaScript 对象表示法 (JSON),并将 JSON 数据反序列化为对象. 此类不能继承. // msdn 例子: namespace SL_DataContractJson ...
- java保存json格式数据,保存字符串和读取字符串
1.java保存json格式数据,保存字符串和读取字符串 import java.io.*; class RWJson { public void wiite(String s, String toS ...
- Python数据结构同Json类型数据相互转换的用法
在做Python接口自动化的时候,经常要用到Python数据结构同Json类型数据相互转换来供我们做进一步的验证提供数据,在此做个记录和总结 Python数据结构同Json类型数据相互转换的函数有:j ...
随机推荐
- Mygin实现动态路由
本篇是Mygin的第四篇 目的 使用 Trie 树实现动态路由解析. 参数绑定 前缀树 本篇比前几篇要复杂一点,原来的路由是用map实现,索引非常高效,但是有一个弊端,键值对的存储的方式,只能用来索引 ...
- 使用阿里canal实现mysql与Elasticsearch增量同步
一.背景介绍 最近在做一个地理信息相关的项目,需要维护大量的地址描述数据,同时需要提供对数据检索的功能,准备采用Elasticsearch(6.7)实现.那么问题就来了,地址数据需要同时在MySQL和 ...
- [转帖]mysql 数据库视图迁移
https://www.cnblogs.com/phpyangbo/p/6132821.html 最近做一个项目,为了方便查询,建了好多的视图表,正式上线的时候需要把本地数据库迁移到服务器上. 按照常 ...
- [转帖]HTTP状态码、请求方法、响应头信息
https://www.cnblogs.com/pachongshangdexuebi/p/5279608.html HTTP状态码 当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求. ...
- [转帖]CentOS7上systemctl的使用
https://www.cnblogs.com/yeyuzhuanjia/p/14676182.html CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系 ...
- [转帖]GCC 编译及编译选项
俗话说:'工欲善其事,必先利其器',一直在工作中使用GNU C编译器(以下简称GCC),这里对GCC的一些警告选项细致的分析,并列举几个简单的例子[注1]供分析参考. 1. -Wall集合警告选项我们 ...
- Oracle 查看所有表大小的SQL
Oracle 查看所有表大小的SQL 比较坑的是 lob 字段和 表的大小不在一个地方 为了出结果 我这边使用了 union all 慢的一逼... SELECT sum( tablesize ), ...
- 基于Spring Cache实现Caffeine、jimDB多级缓存实战
作者: 京东零售 王震 背景 在早期参与涅槃氛围标签中台项目中,前台要求接口性能999要求50ms以下,通过设计Caffeine.ehcache堆外缓存.jimDB三级缓存,利用内存.堆外.jimDB ...
- Docker系列教程01--简介
Docker 入门教程 作者: 阮一峰 日期: 2018年2月 9日 2013年发布至今, Docker 一直广受瞩目,被认为可能会改变软件行业. 但是,许多人并不清楚 Docker 到底是什么, ...
- 从零开始匹配vim(2)——快捷键绑定
如果说 vim有什么最吸引人,我想vim允许你自由的定义各种快捷键算是一个原因吧.你可以通过绑定各种快捷键来使经常使用的功能更加便利.通俗的讲,快捷键映射就是我按下某个键,我想让vim将它当成另一个键 ...