package com.leadingsoft.liuw.utils;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.ser.PropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import com.leadingsoft.liuw.exception.CustomRuntimeException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.StringUtils;
import java.io.IOException;
import java.io.Reader;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
/**
* Created by liuw on 2017/4/21.
*/
public class JsonUtils {
private static final Logger logger = LoggerFactory.getLogger(JsonUtils.class);
public static final TypeReference<Map<String, Object>> MAP_TYPE = new TypeReference() {
};
private static ObjectMapper mapper = new ObjectMapper();
private static ObjectMapper filterMapper;
private JsonUtils() {
}
public static <T> String pojoToJson(T pojo) {
if(pojo == null) {
return null;
} else {
try {
String e = getMapper().writeValueAsString(pojo);
return e;
} catch (IOException var2) {
throw new CustomRuntimeException("Failed to convert Object2JSONString. ", new Object[]{var2});
}
}
}
public static <T> T jsonToPojo(String json, Class<T> pojoClass) {
if(!StringUtils.hasText(json)) {
return null;
} else {
try {
return getMapper().readValue(json, pojoClass);
} catch (IOException var3) {
throw new CustomRuntimeException("Failed to convert JSONString2Object. ", new Object[]{var3});
}
}
}
public static <T> List<T> jsonToPojoList(String json, TypeReference<List<T>> valueTypeRef) {
if(!StringUtils.hasText(json)) {
return null;
} else {
try {
return (List)getMapper().readValue(json, valueTypeRef);
} catch (IOException var3) {
throw new CustomRuntimeException("Failed to convert JSONString2Object. ", new Object[]{var3});
}
}
}
public static <T> T jsonToPojo(Reader src, Class<T> pojoClass) throws JsonParseException, JsonMappingException, IOException {
return getMapper().readValue(src, pojoClass);
}
public static <T> T jsonToPojo(String json, TypeReference<T> valueTypeRef) {
if(!StringUtils.hasText(json)) {
return null;
} else {
try {
return getMapper().readValue(json, valueTypeRef);
} catch (IOException var3) {
throw new CustomRuntimeException("Failed to convert JSONString2Object. ", new Object[]{var3});
}
}
}
public static Map<String, Object> jsonToMap(String json) {
if(!StringUtils.hasText(json)) {
return null;
} else {
try {
return (Map)getMapper().readValue(json, MAP_TYPE);
} catch (IOException var2) {
throw new CustomRuntimeException("Failed to convert JSONString2Map. ", new Object[]{var2});
}
}
}
public static <T> T pojoToPojo(T sourceObject, Class<T> targetType) {
return sourceObject == null?null:getMapper().convertValue(sourceObject, targetType);
}
public static <T> Map<String, Object> pojoToMap(T pojo) {
return pojo == null?null:(Map)getMapper().convertValue(pojo, MAP_TYPE);
}
public static <T> Map<String, Object> pojoToMapWithSpecifiedFields(T pojo, String... fields) {
String json = pojoToJsonWithSpecifiedFields(pojo, fields);
return jsonToMap(json);
}
public static <T> Map<String, Object> pojoToMapWithFilterFields(T pojo, String... fields) {
String json = pojoToJsonWithFilterFields(pojo, fields);
return jsonToMap(json);
}
public static <T> Map<String, Object> pojoToMapWithSpecifiedFields(T pojo, String filterId, String... fields) {
String json = pojoToJsonWithSpecifiedFields(pojo, filterId, fields);
return jsonToMap(json);
}
public static <T> Map<String, Object> pojoToMapWithFilterFields(T pojo, String filterId, String... fields) {
String json = pojoToJsonWithFilterFields(pojo, filterId, fields);
return jsonToMap(json);
}
public static <T> String pojoToJsonWithSpecifiedFields(T pojo, String... fields) {
return pojo == null?null:pojoToJsonWithSpecifiedFields(pojo, pojo.getClass().getName(), fields);
}
public static <T> String pojoToJsonWithFilterFields(T pojo, String... fields) {
return pojo == null?null:pojoToJsonWithFilterFields(pojo, pojo.getClass().getName(), fields);
}
public static <T> String pojoToJsonWithSpecifiedFields(T pojo, String filterName, String... fields) {
if(pojo == null) {
return null;
} else {
if(StringUtils.isEmpty(filterName)) {
filterName = pojo.getClass().getName();
}
return pojoToJson(pojo, filterName, SimpleBeanPropertyFilter.filterOutAllExcept(fields));
}
}
public static <T> String pojoToJsonWithFilterFields(T pojo, String filterName, String... fields) {
if(pojo == null) {
return null;
} else {
String filter = filterName;
if(StringUtils.isEmpty(filterName)) {
filter = pojo.getClass().getName();
}
return pojoToJson(pojo, filter, SimpleBeanPropertyFilter.serializeAllExcept(fields));
}
}
public static <T> Map<String, Object> pojoToMap(T pojo, PropertyFilter filter) {
if(pojo == null) {
return null;
} else {
String json = pojoToJson(pojo, pojo.getClass().getName(), filter);
return jsonToMap(json);
}
}
public static <T> Map<String, Object> pojoToMap(T pojo, String filterName, PropertyFilter filter) {
if(pojo == null) {
return null;
} else {
String json = pojoToJson(pojo, filterName, filter);
return jsonToMap(json);
}
}
public static <T> String pojoToJson(T pojo, PropertyFilter filter) {
return pojo == null?null:pojoToJson(pojo, pojo.getClass().getName(), filter);
}
public static <T> String pojoToJson(T pojo, String filterName, PropertyFilter filter) {
if(StringUtils.isEmpty(filterName)) {
filterName = pojo.getClass().getName();
}
SimpleFilterProvider filters = (new SimpleFilterProvider()).addFilter(filterName, filter);
try {
String e = getFilterMapper().writer(filters).writeValueAsString(pojo);
if(logger.isDebugEnabled()) {
logger.debug("pojoToJson :" + e);
}
return e;
} catch (IOException var5) {
throw new CustomRuntimeException("Failed to convert Object2JSONString. ", new Object[]{var5});
}
}
private static ObjectMapper getMapper() {
if(mapper != null) {
return mapper;
} else {
Class var0 = JsonUtils.class;
synchronized(JsonUtils.class) {
if(mapper != null) {
return mapper;
} else {
mapper = new ObjectMapper();
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
return mapper;
}
}
}
}
private static ObjectMapper getFilterMapper() {
if(filterMapper != null) {
return filterMapper
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目初览 实现天气预报小程序,开发工具导入项目即可查看源码分享 ## 小程序设计过程 小程序是一个易上手的东西, 对于新手来说,多看官方文档,可以初步做出比较完整的小程序,正是因为简单上手,功能实现简单,小程序是越来越火,商业价值也越来越大。 #### 1.项目工具和文档 1. 微信web开发者工具:[微信小程序官网](https://mp.weixin.qq.com/debug/wxadoc/dev/) 这是个比较好用的编辑器,对于小程序编辑很方便。 2. 开发文档:[微信小程序宝典秘籍](https://www.w3cschool.cn/weixinapp/9wou1q8j.html) 通过这个查找微信小程序的API,组件,框架等等。 3. 图标库: [Iconfont-阿里巴巴矢量图标库](http://www.iconfont.cn/) 这个可以找到自己想要的几乎所有的小图标,十分方便。 4. Easy Mork: [easy-mock](www.easy-mock.com) 用于后台的模拟,得到JSON数据; 5. weui框架引入 更多内容请下载查看
资源推荐
资源详情
资源评论
收起资源包目录
Weather forecast system.zip (53个子文件)
Weather forecast
WxMeetingWeixinend-master
pages
detail
detail.json 2B
detail.js 571B
detail.wxml 708B
detail.wxss 0B
index
index.wxml 652B
index.js 793B
index.json 2B
index.wxss 268B
list
list.json 2B
list.wxss 0B
list.js 0B
list.wxml 0B
create
create.js 992B
create.wxss 0B
create.wxml 1012B
create.json 2B
logs
logs.json 54B
logs.js 266B
logs.wxml 188B
logs.wxss 106B
app.json 835B
app.js 1KB
utils
login.js 0B
util.js 460B
app.wxss 194B
icons
meeting.jpg 10KB
list.jpg 3KB
home.jpg 7KB
meeting-selected.jpg 11KB
list-selected.jpg 7KB
home-selected.jpg 10KB
WxMeetingBackend-master
pom.xml 6KB
src
main
resources
config
application.yml 2KB
java
com
leadingsoft
liuw
Application.java 2KB
repository
EnrolleeRepository.java 443B
handler
DefaultUrlRedirectStrategy.java 1KB
DefaultAuthenticationSuccessHandler.java 3KB
controller
EnrolleController.java 786B
WeatherController.java 2KB
utils
JsonUtils.java 9KB
filter
WechatAuthenticationFilter.java 4KB
enums
MsgType.java 909B
EventType.java 915B
model
Enrollee.java 404B
exception
CustomRuntimeException.java 1KB
dto
ResultDTO.java 4KB
PageData.java 2KB
auth
WebAuthenticationToken.java 2KB
config
BeanConfig.java 342B
SecurityConfig.java 4KB
bean
WxSessionBean.java 287B
WxMeetingBackend.iml 5KB
.gitignore 15B
共 53 条
- 1
静香是个程序媛
- 粉丝: 3089
- 资源: 563
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页