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 ...
随机推荐
- [转帖]Region Merge Config
TiKV replicates a segment of data in Regions via the Raft state machine. As data writes increase, a ...
- [转帖]MOUNTING AN S3 BUCKET ON WINDOWS AND LINUX
https://blog.spikeseed.cloud/mount-s3-as-a-disk/#mounting-an-s3-bucket-on-windows-server-2016 Wouldn ...
- [转帖]MySQL ALTER TABLE: ALTER vs CHANGE vs MODIFY COLUMN
https://www.cnblogs.com/pachongshangdexuebi/p/5029152.html ALTER COLUMN 语法: ALTER [COLUMN] col_name ...
- [转帖]Linux权限详解(chmod、600、644、666、700、711、755、777、4755、6755、7755)
https://www.cnblogs.com/monjeo/p/12191673.html 权限简介Linux系统上对文件的权限有着严格的控制,用于如果相对某个文件执行某种操作,必须具有对应的权限方 ...
- 申威3231服务器Redis性能验证-及最全信创CPU性能分析
申威3231服务器Redis性能验证-及最全信创CPU性能分析 背景 公司里面新进了几台服务器. 有台申威服务器. 因为前段时间参与过一次申威的POC验证. 当时对性能有一点简单的理解. 但是因为不方 ...
- [转帖]py_innodb_page_info.py工具使用
目录 一.Linux安装Python3 1. 解压包 2. 安装环境 3. 生成编译脚本 4. 检查python3.10的编译器 5. 建立Python3和pip3的软链 6. 添加到PATH 7. ...
- [转帖] Linux命令拾遗-使用blktrace分析io情况
https://www.cnblogs.com/codelogs/p/16060775.html 原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 简介# 一般来说,想检 ...
- [转帖]xfs_repair命令详解
https://bbs.qunyingkeji.com/2052/ 1.现状 目前网上出现大量的主机输入输出错误,原因是由于主机文件系统损坏.一线人员大部分采用的是umont 和 mount的方式恢复 ...
- 使用 Taro 开发鸿蒙原生应用 —— 探秘适配鸿蒙 ArkTS 的工作原理
背景 在上一篇文章中,我们已经了解到华为即将发布的鸿蒙操作系统纯血版本--鸿蒙 Next,以及各个互联网厂商开展鸿蒙应用开发的消息.其中,Taro作为一个重要的前端开发框架,也积极适配鸿蒙的新一代语言 ...
- git日志输出相关命令
git log 默认输出所有的日志 git log 默认输出所有的日志 git 日志输出--只看最近的两条或者三条 有些时候我们可能只需要看最近的2或者3条日志 git log -2 日志输出--只看 ...