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开发笔记(九十)对象序列化及其读写
有些时候,开发者想把程序运行过程中的数据临时保存到文件,可是前面介绍的字符流和字节流,要么用来读写文本字符串,要么用来读写字节数组,并不能直接保存某个对象信息,因为对象里面包括成员属性和成员方法,单就 ...
随机推荐
- nginx的proxy_redirect
proxy_redirect 语法:proxy_redirect [ default|off|redirect replacement ]; 默认:proxy_redirect default; 配置 ...
- [crypto] AEAD是啥
AEAD这个缩写根据不同的语境有两个理解角度:认证加密机制,认证加密方式. 认证加密机制是指:一些用来完成认证加密工作的方法,拆分为认证和加密两部分来做,先加密后加密先认证后认证都无所谓,整个过程或者 ...
- Nginx(三)-正向代理与反向代理
原文:正向代理与反向代理的区别 正向代理中,proxy和client同属一个LAN,对server透明: 反向代理中,proxy和server同属一个LAN,对client透明. 实际上proxy在两 ...
- IntelliJ IDEA 指定Java编译版本
在IntelliJ IDEA 15中使用Maven时,IDEA将默认的编译版本.源码版本设置为jdk5.编译项目的时候出现警告:”Warning:Java: 源值1.5已过时, 将在未来所有发行版中删 ...
- 2018-2019-2 20165336《网络攻防技术》Exp5 MSF基础应用
2018-2019-2 20165336<网络攻防技术>Exp5 MSF基础应用 一.攻击实例 主动攻击的实践 ms08_067(成功) payload/generic/shell_rev ...
- LG2292 L语言
题意 给出\(n\)个单词,再给出\(m\)段无符号的文章,询问每段文章能最长匹配的前缀. 思路 设\(f[i]\)为前缀\([1,i]\)能否被匹配,对于一个可以匹配完的节点\(i\),若有\([i ...
- uCOS-II
/****************************************************/ **关于移植,ucos官网上给的有template,主要思想是实现任务切换的两个函数(任务 ...
- supervise守护进程
通过二进制supervise文件可以直接对进程进行守护 ./supervise -f 要守护的程序 -p 守护信息存储位置 例如: ./supervise -f http_server -p s ...
- 对象是存入cookie中需要注意
直接把对象存入cookie中的话,会转为字符串的 cookie中保存的都是字符串 所以取出来后还需要进行转换,转换成对象 JSON.parse()进行转换
- Ubuntu 常见的问题及常见软件的安装_ubuntu16.04
1, 在使用 rpm 删除 rpm 包的时候的: rpm -r *** 报错: error reading information on service sfdc3: No such file or ...