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 ...
随机推荐
- [转帖]java乱码 java使用的编码是utf-8还是utf-16还是unicode
简单介绍编码 Unicode:是容纳世界所有文字符号的国标标准编码,使用四个字节为每个字符编码 UTF:是英文 Unicode Transformation Format 的缩写,意为把 Unicod ...
- [转帖]oracle中Rman增量备份下各级别level的区别
RMAN备份分为全备和增量备份两部分 增量备份:分为0 1 2级 ORACLE官方解释: A level 1 incremental backup can be either of the foll ...
- [转帖]Module ngx_http_v2_module
https://nginx.org/en/docs/http/ngx_http_v2_module.html#:~:text=Sets%20the%20maximum%20number%20of%20 ...
- [转帖]RocksDB 简介
https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview RocksDB 是由 Facebook 基于 LevelDB 开发的一款提供键值存储与 ...
- [转帖]PostgreSQL 的性能调优方法
https://juejin.cn/post/7119489847529570334 浅谈PostgreSQL的性能调校 PostgreSQL的性能调校是指调校数据库以提高性能和快速访问数据:我们可以 ...
- [转帖]Kafka生产者——重要参数配置
https://www.cnblogs.com/luckyhui28/p/12001798.html 目录 acks max.request.size retries和retry.backoff.ms ...
- [转帖]《Linux性能优化实战》笔记(24)—— 动态追踪 DTrace
使用 perf 对系统内核线程进行分析时,内核线程依然还在正常运行中,所以这种方法也被称为动态追踪技术.动态追踪技术通过探针机制来采集内核或者应用程序的运行信息,从而可以不用修改内核和应用程序的代码就 ...
- [转帖]Linux中最全shell命令&常用注意事项
在编辑linux脚本中不断的会用到复杂的脚本编辑,写文章记录. Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 目录 推荐书籍: Linux常用命令 Linux 常用命令 在li ...
- mysql 获取 今天是今年的第几天, 以及 还有多少天元旦的方法
1. 获取今天是这一年的第几天 select dayofyear(curdate()); 或者是 select dayofyear(now()); 2. 获取还有多少天元旦的方法 select dat ...
- 01显示转换隐私转换 有8个值转为false 显示转换Number的注意点
prompt()函数会弹出一个框,接受用户的输入.但是在实际的开发中.这样的操作是很少. 至少在我做开发的过程中没有使用过.我二没有看见人家在过开发的使用使用. console.log(Number( ...