Java序列化,解决字段为null与序列化后首字母变小写问题
fastjson.jar
package com.apt.utils; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.apt.model.TBTEntity; import org.json.JSONObject; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; /**
* Created by Administrator on 2017/4/14.
*/ public class JsonUtil {
private final static String tag="JsonUtil";
/**
* 反序列化一个实体
* @param jsonString {"Address":"北京市通州区科创六街","BaiDuLat":39.814426895001,"BaiDuLng":116.55877636322,"CellId":41776,"Lac":4388,"Lat":39.808475,"Lng":116.552281,"MNC":"0"}
* @param clazz CellInfo.class
* @param <T>
* @return
*/
public static <T> Object parseObject(String jsonString,Class<T> clazz){
try{
if(jsonString==null||jsonString.equals("")){
return null;
}
return JSON.parseObject(jsonString, clazz);
}
catch(Exception ex){
LogUtil.WriteError(ex,tag+"->toBean()");
return null;
}
} /**
* 反序列化一个泛型集合
* @param json
* @return
*/
public static <T>List<T> parseArray(String json,Class<T> clazz){
List<T> list=new ArrayList<T>();
try{
list = JSON.parseArray(json, clazz);
}
catch(Exception ex){
LogUtil.WriteError(ex,tag+"->parseArray()");
}
return list;
}
/**
* 反序列化一个具体集合
* @param json
* @return
*/
public static List<TBTEntity> getListTBTEntity(String json){
List<TBTEntity> list=new ArrayList<TBTEntity>();
try{
list = JSON.parseArray(json, TBTEntity.class);
}
catch(Exception ex){
LogUtil.WriteError(ex,tag+"->getListTBTEntity()");
}
return list;
} public static String toJSONString(Object clazz){
String json="";
try{
json = JSON.toJSONString(clazz,filter);
}
catch(Exception ex){
LogUtil.WriteError(ex,tag+"->toJSONString()");
}
json=formatJson(json);
return json;
} //解决序列化对对象为null的字段不序列化的问题
private static ValueFilter filter = new ValueFilter() {
@Override
public Object process(Object obj, String s, Object v) {
if(v==null)
return "";
return v;
}
}; //解决序列后首字母变成小写的问题
private static String formatJson(String orgJson) {
JSONObject jo = new JSONObject();
try {
JSONObject jsonObject = new JSONObject(orgJson);
Iterator iterator = jsonObject.keys(); while (iterator.hasNext()) {
String key = (String) iterator.next();
char chars[] = key.toCharArray();
if (key.length() > 1 && Character.isLowerCase(key.charAt(0))) {
chars[0] = Character.toUpperCase(chars[0]);
} Boolean bl = jsonObject.isNull(key);
if (bl) {
jo.put(new String(chars), null);
} else {
Object object = jsonObject.get(key);
try {
if (object instanceof Number) {
jo.put(new String(chars),
((Number) object).intValue());
} else {
jo.put(new String(chars), jsonObject.getString(key));
}
} catch (Exception e) {
jo.put(new String(chars), jsonObject.getString(key));
}
}
}
} catch (Exception ex) {
LogUtil.WriteError(ex,tag+"->formatJson()");
}
return jo.toString();
}
}
Java序列化,解决字段为null与序列化后首字母变小写问题的更多相关文章
- C#序列化json属性名首字母变成小写的解决方案
原文:C#序列化json属性名首字母变成小写的解决方案 //接口返回自动转小写,容易造成前后端不一致,获取不到数据,切换成转驼峰(首字母大写)如Code/Result //在ConfigureServ ...
- Java中实现对集合中对象按中文首字母排序
有一个person对象如下: public class Person { private String id;private String nam; } 一个list集合如下: List<Emp ...
- fastjson转换json字符串key的首字母小写变大写的解决办法
https://blog.csdn.net/erbao_2014/article/details/53688934 问题描述在开发过程中,由于接口文档的描述,要求json字符串的key首字母为大写,而 ...
- 关于java中实现在oracle数据库中实现对中文首字母进行排序的解决方案
首先介绍Oracle 9i新增加的一个系统自带的排序函数 1.按首字母排序 在oracle9i中新增了按照拼音.部首.笔画排序功能.设置NLS_SORT值 SCHINESE_RADICAL_M ...
- 用Java将字符串的首字母转换大小写
在项目开发的时候会需要统一字符串的格式,比如首字母要求统一大写或小写,那用Java如何实现这一功能?下面一起来学习学习. 话不多说,直接上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 ...
- Java编程的逻辑 (62) - 神奇的序列化
本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...
- JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码
一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...
- Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...
- Java开发笔记(九十)对象序列化及其读写
有些时候,开发者想把程序运行过程中的数据临时保存到文件,可是前面介绍的字符流和字节流,要么用来读写文本字符串,要么用来读写字节数组,并不能直接保存某个对象信息,因为对象里面包括成员属性和成员方法,单就 ...
随机推荐
- ubuntu16.04安装mrpt
源码地址 https://github.com/MRPT/mrpt 安装教程 https://github.com/MRPT/mrpt/blob/master/README.md#32-build-f ...
- lcr电桥浅谈
此图告知,现代的lcr电桥使用的都是虚地,阻抗很高. 系统采用的鉴相器比较简单,是检半个正弦基波(RMS有效值积分),可以有效抵御偶次基波. 倒不如直接使用运放电容移相,比较采样法直接采样最高点. 此 ...
- python2和python3共存时,设置默认python为python3
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alternati ...
- springcloud第五步:使用Zuul搭建服务接口网关
路由网关(zuul) 什么是网关 Zuul的主要功能是路由转发和过滤器.路由功能是微服务的一部分,比如/api/user转发到到user服务,/api/shop转发到到shop服务.zuul默认和Ri ...
- Polynomial_0
@[注]两个一元多项式按照指数由大到小的顺序输入! #include <stdio.h> #define MAXSIZE 50 struct PolyNode { int coeffici ...
- matlab多个曲面如何画在一个坐标系中的疑问
matlab多个曲面如何画在一个坐标系中的疑问 [复制链接] [X,Y]=meshgrid(-3:0.1:3);Z=X.^2+Y.^2;mesh(X,Y,-Z)hold onmesh(X,Y,Z)
- 放弃antd table,基于React手写一个虚拟滚动的表格
缘起 标题有点夸张,并不是完全放弃antd-table,毕竟在react的生态圈里,对国人来说,比较好用的PC端组件库,也就antd了.即便经历了2018年圣诞彩蛋事件,antd的使用者也不仅不减,反 ...
- MQ消息队列配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...
- spring boot入门小案例
spring boot 入门小案例搭建 (1) 在Eclipse中新建一个maven project项目,目录结构如下所示: cn.com.rxyb中存放spring boot的启动类,applica ...
- zabbix监控实战<3> 之自定义监控实例
第一章 自定义监控tcp状态 命令可以选择ss 或者 netstat ss打印基于socket的统计信息,实际运行下来,ss的速度要比netstat要快得多 1.1 tcp的十一种状态 ...