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开发笔记(九十)对象序列化及其读写
有些时候,开发者想把程序运行过程中的数据临时保存到文件,可是前面介绍的字符流和字节流,要么用来读写文本字符串,要么用来读写字节数组,并不能直接保存某个对象信息,因为对象里面包括成员属性和成员方法,单就 ...
随机推荐
- Python中的短路计算
在Python中,布尔类型还可以与其他数据类型做 and.or和not运算,请看下面的代码: In [1]: a = True In [2]: print(a and 'a=T' or 'a=F') ...
- SQL的几种连接:内连接、外连接(左连接、右连接、全连接)
表结构见前面博客 1.内连接 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列. 三种写法: select * from t ...
- Fiddler_菜单栏介绍_02
Fiddler界面 [Statistics]请求的性能数据分析 [Inspectors]查看数据内容 Inspectors是用于查看会话的内容,上半部分是请求的内容,下半部分是响应的内容: [Auto ...
- build.xml编译报错Specified VM install not found: type Standard VM, name jdk1.7.0_45
build.xml编译打包时报错: 解决方法: build.xml —— 右键 —— Run As —— External Tools Configuration 在这个页面的顶端就会看到有红叉 ...
- Spring Boot事务管理(上)
摘要 本文主要介绍基于Spring Boot的事务管理,尤其是@Transactional注解详细用法.首先,简要介绍Spring Boot中如何开启事务管理:其次,介绍在Spring,Spring ...
- 实验吧MD5之守株待兔解题思路
解题链接 http://ctf5.shiyanbar.com/misc/keys/keys.php 解题思路 首先我们多打开几次解题链接,发现系统密钥大约在一秒钟左右变一次,所以联想到时间戳. 解题过 ...
- 北京大学Cousera学习笔记--5-计算导论与C语言基础--计算机的基本原理-设计程序
只要你认真的思考,你就会发现这个世界是如此的简单,正如我们想象的一样,正因为如此,我们的思考才更加的有价值 1.单词:关键字(有特定含义的):其他词用关键字定义出来 2.数和计算符号:数据类型+运算符 ...
- windows 下安装weblogic
下载weblogic安装文件 https://www.oracle.com/technetwork/middleware/weblogic/downloads/index.html 在目录下, 下载后 ...
- windows ip路由
windows 20082块网卡,连接远程mysql数据库一直不通,ping正常,telnet 3306端口不正常 route print 路由情况 route add 10.255.2574.XXX ...
- Java利用原始HttpURLConnection发送http请求数据小结
1,在post请求下,写输出应该在读取之后,否则会抛出异常. 即操作OutputStream对象应该在InputStreamReader之前. 2.conn.getResponseCode()获取返回 ...