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 ...
随机推荐
- [转帖]Linux_Redhat8——常用命令:ls、ll、vim、ps、top、grep、tail
Linux_Redhat8-常用命令: ls.ll.vim.ps.top.grep 一.ls(list):查看目录下的文件 ls:仅罗列出当前文件名或目录名. ll:罗列出当前文件或目录的详细信息,包 ...
- goofys 鲲鹏上面编译挂载与性能测试
goofys 鲲鹏上面编译挂载与性能测试 介质 使用go进行编译. 官网上面有 amd64的介质,但是没有aarch64的介质 需要自行编译 前几天一直编译失败. 周天在家自己测试了一把,根据gith ...
- [转帖]/dev/null 2>&1详解
https://www.diewufeiyang.com/post/1045.html shell中可能经常能看到:>/dev/null 2>&1 命令的结果可以通过%>的形 ...
- [转帖]MySQL InnoDB存储引擎大观
https://baijiahao.baidu.com/s?id=1709263187856706948&wfr=spider&for=pc MySQL InnoDB 引擎现在广为 ...
- 【转帖】网卡bonding模式 - bond0、1、4配置
网卡bonding简介 网卡绑定就是把多张物理网卡通过软件虚拟成一个虚拟的网卡,配置完毕后,所有的物理网卡的ip和mac将会变成相同的.多网卡同时工作可以提高网络速度,还可以实现网卡的负载均衡.冗余. ...
- HTTPS下tomcat与nginx的前端性能比较
HTTPS下tomcat与nginx的前端性能比较 摘要 之前比较http的web服务器的性能. 发现nginx 比 tomcat 要好 50% 然后想到, https的情况下不知道两者有什么区别 所 ...
- GitHubDesktop汉化和下载
GitHubDesktop下载 这玩意官网下载速度特别慢 如果不想等待的可以戳下面链接进行下载 会实时同步更新的 下载地址:GitHubDesktop下载
- TienChin 开篇-运行 RuoYiVue
开篇 目的: 让大家随心所欲的 DIY 若依的脚手架 不会涉及到太多基础知识 踊跃提问(不懂得地方大家提问我会根据提问,后续一一解答疑惑) 下载 RuoYiVue Gitee: https://git ...
- 1.14 手工插入ShellCode反弹
PE格式是 Windows下最常用的可执行文件格式,理解PE文件格式不仅可以了解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,而有些技术必须建立在了解PE文件格式的基础上,如 ...
- Flask 之SocketIO库实现绘图表
Flask 默认提供了针对WebSocket的支持插件from flask_socketio import SocketIO 直接通过pip命令安装即可导入使用,前端也需要引入socketIO库文件, ...