JSON 和 POJO 互转,List<T> 和 JSON 互转
JSON 和 POJO
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* 对象POJO和JSON互转
*
* @author mxn
* @create 2018-09-05 14:35
*/
public class JsonUtil {
public static final Logger logger = LoggerFactory.getLogger(JsonUtil.class);
/**
* JSON 转 POJO
* @param pojo
* @param tClass
* @param <T>
* @return
*/
public static <T> T getObject(String pojo, Class<T> tClass) {
try {
return JSONObject.parseObject(pojo, tClass);
} catch (Exception e) {
logger.error(tClass + "转 JSON 失败");
}
return null;
}
/**
* pojo 转json
* @param tResponse
* @param <T>
* @return
*/
public static <T> String getJson(T tResponse) {
String pojo = JSONObject.toJSONString(tResponse);
return pojo;
}
}
List 和 JSON
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import java.util.List;
/**
* List集合和JSON互转工具类
* @author mxn
* @create 2018-09-05 14:45
*/
public class JsonListUtil {
/**
* List<T> 转 json
* @param ts
* @param <T>
* @return
*/
public static <T> String listToJson(List<T> ts){
return JSON.toJSONString(ts);
}
/**
* json 转 List<T>
* @param jsonStr
* @param tClass
* @param <T>
* @return
*/
public static <T> List<T> jsonToList(String jsonStr, Class<T> tClass) {
return JSONArray.parseArray(jsonStr, tClass);
}
}
测试#
POJO和JSON
import org.junit.Test;
import org.seckill.entity.Seckill;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author mxn
* @create 2018-09-05 14:40
*/
public class JsonUtilTest {
public static final Logger logger = LoggerFactory.getLogger(JsonUtilTest.class);
@Test
public void method1() {
Seckill seckill = new Seckill();
seckill.setName("Iphone X");
String json = JsonUtil.getJson(seckill);
logger.info("JsonUtilTest.method1 info={}",json);
Seckill object = JsonUtil.getObject(json, Seckill.class);
logger.info("JsonUtilTest.method1 info={}",object.getName());
}
}
List 和 JSON
import org.junit.Before;
import org.junit.Test;
import org.seckill.entity.Seckill;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
/**
* @author mxn
* @create 2018-09-05 14:48
*/
public class JsonListUtilTest {
public static final Logger logger = LoggerFactory.getLogger(JsonListUtilTest.class);
private List<Seckill> list = new ArrayList<Seckill>();
private String jsonStr;
@Before
public void beforeMethod() {
for (int i = 0; i < 5; i++) {
Seckill seckill = new Seckill();
seckill.setName("iphone " + i);
list.add(seckill);
}
jsonStr = "[{\"name\":\"iphone 0\",\"number\":0,\"seckillId\":0},{\"name\":\"iphone 1\",\"number\":0,\"seckillId\":0},{\"name\":\"iphone 2\",\"number\":0,\"seckillId\":0},{\"name\":\"iphone 3\",\"number\":0,\"seckillId\":0},{\"name\":\"iphone 4\",\"number\":0,\"seckillId\":0}]";
}
@Test
public void method() {
String s = JsonListUtil.listToJson(list);
logger.info("JsonListUtilTest.method info={}",s);
}
@Test
public void method2() {
List<Seckill> seckills = JsonListUtil.jsonToList(jsonStr, Seckill.class);
for (Seckill seckill : seckills) {
logger.info("JsonListUtilTest.method2 info={}",seckill.getName());
}
}
}
POJO
import java.util.Date;
/**
* @author mxn
* @create 2018-05-17 15:36
*/
public class Seckill {
private long seckillId;
private String name;
private int number;
private Date startTime;
private Date endTime;
private Date createTime;
public long getSeckillId() {
return seckillId;
}
public void setSeckillId(long seckillId) {
this.seckillId = seckillId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public Date getStartTime() {
return startTime;
}
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return "Seckill{" +
"seckillId=" + seckillId +
", name='" + name + '\'' +
", number=" + number +
", startTime=" + startTime +
", endTime=" + endTime +
", createTime=" + createTime +
'}';
}
}
JSON 和 POJO 互转,List<T> 和 JSON 互转的更多相关文章
- Json、JavaBean、Map、XML之间的互转
思路是JavaBean.Map.XML都可以用工具类很简单的转换为Json,进而实现互相转换 1.Map.XML与Json互转 mvn依赖 <dependency> <groupId ...
- 总结的一些json格式和对象/String/Map/List等的互转工具类
总结的一些json格式和对象/String/Map/List等的互转工具类,有需要的可以看看,需要引入jackson-core-asl-1.7.1.jar.jackson-jaxrs-1.7.1.ja ...
- json转字符串,json转list,json转pojo的工具类
package com.loveshop.util; import java.util.List; import com.fasterxml.jackson.core.JsonProcessingEx ...
- 转载-------- JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ...
- json与list,map,String之间的互转
package tools; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import j ...
- JSON转JS对象,JS对象转JSON
一.从服务端发来的json字符串,怎么才能作为JavaScript对象(JSON对象)在web端调用呢? 1.如果使用jQuery,就很方便了,可以在ajax一系列函数中,把参数Datatype传js ...
- ajax 发送json数据时为什么需要设置contentType: "application/json”
1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别? contentType: "application/j ...
- ajax发送json数据时为什么需要设置contentType: "application/json”
1. ajax发送json数据时设置contentType: "application/json”和不设置时到底有什么区别?contentType: "application/js ...
- json数组转普通数组 普通数组转json数组
1.json_decode() json_decode (PHP 5 >= 5.2.0, PECL json >= 1.2.0) json_decode — 对 JSON 格式的字符串进行 ...
随机推荐
- show me bug
比较版本号 前者大返回1 后者大返回-1 两者一样大返回0 #include <iostream> #include<string> using namespace std; ...
- element-ui(vue版)使用switch时change回调函数中的形参传值问题
需求说明 有多个switch组件 需要知道switch的状态 表格中当前行(scope.row)的数据 问题描述 官方文档中对switch中change的描述: 目前能得到switch的状态值,但是无 ...
- Python之爬虫(十七) Scrapy框架中Spiders用法
Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设 ...
- 数据可视化实例(九): 边缘箱形图(matplotlib,pandas)
https://datawhalechina.github.io/pms50/#/chapter7/chapter7 边缘箱形图 (Marginal Boxplot) 边缘箱图与边缘直方图具有相似的用 ...
- LeetCode第4题:寻找两个有序数组的中位数
double Solution::findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) ...
- angular浏览器兼容性问题解决方案
问题:edge浏览器下,固定列的边框消失 原因:ng-zorro-antd表格组件使用nzLeft和nzRight指令固定的表格列,这两个指令的实现css3中的标签: position: -webki ...
- bzoj3526[Poi2014]Card*
bzoj3526[Poi2014]Card 题意: 有n张卡片在桌上一字排开,每张卡片上有两个数,第i张卡片上,正面的数为a[i],反面的数为b[i].有m个操作,第i个操作会交换c[i]和d[i]两 ...
- 索引中丢失 IN 或 OUT 参数:: 103,解决办法
索引中丢失 IN 或 OUT 参数:: 103 这个原因是数据库中的字段类型与SQL语句中的类型不匹配造成的,103代表第103个字段参数错误.找到对应参数配置或者SQL中这个参数的类型是否与数据库 ...
- CondenseNet:可学习分组卷积,原作对DenseNet的轻量化改造 | CVPR 2018
CondenseNet特点在于可学习分组卷积的提出,结合训练过程进行剪枝,不仅能准确地剪枝,还能继续训练,使网络权重更平滑,是个很不错的工作 来源:晓飞的算法工程笔记 公众号 论文:Neural ...
- Vue.js +pdf.js 处理响应pdf文件流数据,前端转图片预览不可下载
使用场景及原因 实际业务中,一些说明书或协议仅支持用户在线预览,为避免用户自行下载,并进行修改,引发纠纷,特将文件已文件流的形式,传给前端并转为图片显示,此时可能会有人问,为什么不直接在后端转图片,前 ...