package com.cdeer.im.common.util;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.log4j.Logger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class JacksonUtil {
private static Logger Log = Logger.getLogger(JacksonUtil.class.getName());
private static ThreadLocal<ObjectMapper> objMapperLocal = new ThreadLocal<ObjectMapper>() {
@Override
public ObjectMapper initialValue() {
ObjectMapper OBJECT_MAPPER = new ObjectMapper();
OBJECT_MAPPER.setSerializationInclusion(Include.NON_NULL);// 如果属性为null,不序列化成string
OBJECT_MAPPER.configure(
DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);// 当json有多余属性时,过滤掉此属性
return OBJECT_MAPPER;
}
};
/**
* json转成list
*
* @param jsonString
* @param clazz
* @param <T>
* @return
* @throws IOException
*/
public static <T> List<T> json2List(String jsonString, Class<T> clazz) throws IOException {
JavaType javaType = objMapperLocal.get().getTypeFactory().constructParametricType(ArrayList.class, clazz);
List<T> lst = (List<T>) objMapperLocal.get().readValue(jsonString, javaType);
return lst;
}
/**
* json转成有序list
*
* @param jsonString
* @param clazz
* @param <T>
* @return
* @throws IOException
*/
public static <T> List<T> json2LinkedList(String jsonString, Class<T> clazz) throws IOException {
JavaType javaType = objMapperLocal.get().getTypeFactory().constructParametricType(LinkedList.class, clazz);
List<T> lst = (List<T>) objMapperLocal.get().readValue(jsonString, javaType);
return lst;
}
/**
* JSON转成对象
*
* @param jsonString
* @param clazz
* @return
*/
public static <T> T json2Object(String jsonString, Class<T> clazz) throws IOException {
if (jsonString == null || "".equals(jsonString)) {
return null;
}
return objMapperLocal.get().readValue(jsonString, clazz);
}
/**
* 将对象转化成json
*
* @param ob
* @return
*/
public static String object2string(Object ob) {
String str = "";
try {
str = objMapperLocal.get().writeValueAsString(ob);
} catch (Exception e) {
Log.error(e.getMessage(), e);
}
return str;
}
/**
* json转成对象
*
* @param obj
* @param clazz
* @return
*/
public static <T> T object2Object(Object obj, Class<T> clazz) {
try {
String str = objMapperLocal.get().writeValueAsString(obj);
return objMapperLocal.get().readValue(str, clazz);
} catch (Exception e) {
Log.error(e.getMessage(), e);
}
return null;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于Netty+Redis+protobuf开发的即时通讯服务器
共38个文件
sample:13个
xml:6个
java:5个
0 下载量 42 浏览量
2024-05-17
11:16:44
上传
评论
收藏 3.33MB ZIP 举报
温馨提示
基于Netty+Redis+protobuf开发的即时通讯服务器 第一版是一个简版,只实现了很少的功能,现在已经迁移到 [v1.0](https://github.com/linyu19872008/cdeer-im/tree/v1.0) 第二版的目标有以下几点: 1 工程用Maven、Spring管理 2 重新定义协议 3 丢包处理 4 支持websocket 5 集群 支持功能包括: 1 一对一对话 2 群组聊天 3 出席 4 会话(暂缓) 第二版环境要求: 1 JDK1.8及以上 2 Zookeeper3.4.9及以上 3 Redis2.8及以上
资源推荐
资源详情
资源评论
收起资源包目录
基于Netty+Redis+protobuf开发的即时通讯服务器.zip (38个子文件)
基于Netty+Redis+protobuf开发的即时通讯服务器
pom.xml 1KB
im-connector-tcp
pom.xml 520B
im-common
pom.xml 2KB
src
main
java
com
cdeer
im
common
model
TestModel.java 114B
util
DateUtil.java 2KB
FastJsonUtil.java 2KB
JsonAdapter.java 2KB
JacksonUtil.java 3KB
im-connector-websocket
pom.xml 526B
im-provider
pom.xml 515B
.git
index 2KB
HEAD 23B
refs
heads
master 41B
tags
remotes
origin
HEAD 32B
objects
pack
pack-c795985b0d4a84c22a21a76197033c6373150c3b.pack 3.29MB
pack-c795985b0d4a84c22a21a76197033c6373150c3b.idx 9KB
info
description 73B
packed-refs 180B
info
exclude 240B
logs
HEAD 192B
refs
heads
master 192B
remotes
origin
HEAD 192B
hooks
post-update.sample 189B
prepare-commit-msg.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
update.sample 4KB
pre-commit.sample 2KB
pre-rebase.sample 5KB
applypatch-msg.sample 478B
fsmonitor-watchman.sample 5KB
push-to-checkout.sample 3KB
pre-applypatch.sample 424B
pre-push.sample 1KB
pre-merge-commit.sample 416B
config 308B
im-datasouce
pom.xml 945B
.gitignore 173B
共 38 条
- 1
资源评论
小鹏linux
- 粉丝: 5w+
- 资源: 491
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功