json工具类(java json工具)
本篇文章给大家谈谈json工具类,以及java json工具对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、json的使用及其作用
- 2、Gson、FastJson、Jackson、json-lib对比总结
- 3、java解析json字符串里面字段不能为空的工具类
- 4、java : json 过滤不合法字符的工具包工具类工具
json的使用及其作用
-js中的对象只有js自己认识,其他的语纤埋言不认识
并且可以转换为任意语言中的对象,json在开发中的主要用来数据的交互。
json
-javascript Object Notation js对象表示法
-json和js对象格式一样,只不过json字符串中的属性名必须加双引号其他得和js语法一致
json分类,
1.对象{}
2.数组[]
json中允许的值,
1.字符串
2.数值
3.布尔值
4.null
5.对象
6.数组
将json字符串转换成js中的对象
在js中为我们提供了一个工具类,就叫JSON
这个对象可以帮助我们将一个JSON转换为js对象,也可讲一个js对象转换为一个JSON对象
json转化为js对象用parse方法
var o=JSON.parse(json);
祥竖丛 console.log(o.name);
js对象转化为json
JSON.stringify()
-可以讲一个js对象转化为json字符串
-需要一个js对象谨樱作为参数,会返回一个json字符串
Gson、FastJson、Jackson、json-lib对比总结
综上4种Json技术的比较: 在项目选型的时候可以使用Google的Gson和阿里巴巴的FastJson两种并行使用,
如果只是功能要求,没有性能要求,可以使用google的Gson,
如果有性能上面的要求可以使用Gson将bean转换json确保数据的正确,使用FastJson将Json转换Bean
2.1 主要类介绍
Gson类:解析json的最基础兆枯的工具类
JsonParser类:解析器来解析JSON到JsonElements的解析树
JsonElement类:一个类代表的JSON元素
JsonObject类:JSON对象类型
JsonArray类:JsonObject数组
TypeToken类:用于创建type,比如泛型List?
2.2 maven依赖
2.3 bean转换json
2.4 json转换bean
2.5 json转换复杂的bean,比如List,Set
将json转换成复杂类型的bean,需要使用TypeToken
2.6 通过json对象直接操作json以及一些json的工具
a) 格式化Json
b) 判断字符串是否是json,通过捕捉的异常来判断是否是json
c) 从json串中获取属性
d) 除去json中的某个属性
e) 向json中添加属性
f) 修改json中的属性
g) 判断json中是否有属性
h) json中日期格式的处理
然后使用gson对象进行json的处理,如果出现日期Date类的对象,就会按照设置的格式进行处理
i) json中对于Html的转义
这种对象默认对Html进行转义,如果不想转义使用下面的方法
3.1 maven依赖
3.2 基础转换类
同上
3.3 bean转换茄猜纯json
将对象转换成格式化的json
将对象转换成非格式化的json
obj设计对象
对于复杂类型的转换,对于重复的引用在转成json串后在json串中出现引用的字符,比如 [0].books[1]
3.4 json转换bean
3.5 json转换复杂的bean,比如List,Map
3.6 通过json对象直接操作json
a) 从json串中获取属性
b) 除去json中的某个属性
c) 向json中添加属性
d) 修改json中的属性
e) 判断json中是否有属性
f) json中日期格式的处理
使用JSON.toJSONStringWithDateFormat,该方法可以使用设置的日期格式对日期进行转换
4.1 maven依赖
4.2 基础转换类
同上
4.3 bean转换json
a)将类转换颤咐成Json,obj是普通的对象,不是List,Map的对象
b) 将List,Map转换成Json
4.4 json转换bean
4.5 json转换List,对于复杂类型的转换会出现问题
4.6 json转换Map
4.7 json对于日期的操作比较复杂,需要使用JsonConfig,比Gson和FastJson要麻烦多了
创建转换的接口实现类,转换成指定格式的日期
4.8 JsonObject 对于json的操作和处理
a) 从json串中获取属性
b) 除去json中的某个属性
c) 向json中添加和修改属性,有则修改,无则添加
d) 判断json中是否有属性
fastjson 和 jackson 在把对象序列化成json字符串的时候,是通过反射遍历出该类中的所有getter方法;
Gson 是通过反射遍历该类中的所有属性。
所以, 在定义POJO中的布尔类型的变量时,不要使用isSuccess这种形式,而要直接使用success 。
以上为网上摘抄,以下为实际项目中使用结果。
实体类为 BaseVO.java :
用Gson 将该实体类转成json时报以下异常:
原因是:子类和父类有相同的字段属性;
解决方法:
(1)重命名重复字段。因为重复的字段在第三方包中,所以该方法在本例中不可行。
(2)将实体类中需要打印的字段加上注解 @Expose ,(本例将该类所有有get方法的属性都加上了) :
新建gson:
excludeFieldsWithoutExposeAnnotation 排除掉没有Expose注解的属性。
或者在不需要解析的字段前面加上 transient :
用该方式,没有报异常了,解析结果(加注解 @Expose 或加 transient )如下:
但从结果来看,那些直接调用第三方api获取值的属性没有解析,因为第三方的类无法加上 @Expose注解 ,导致这些属性为 null ,而 Gson默认的规则不会解析为 null 的属性 ,比如:
(3)换解析方式:使用FastJson。
因为FastJson是通过getter方法获取属性,并把其值序列化成json字符串的,所以这里,我们这个实体类中去掉不想被解析的属性的get方法,变成如下:
fastJson、JackJson以及Gson序列化对象与get、set以及对象属性之间的关系
[img]java解析json字符串里面字段不能为空的工具类
解析坦大烂JSON字符串时,如果某个字段为空,可能会导致程序出现异常或错误结果。为了避免这种情况,可以使用工具类来确保字段不为空。
在Java中,可以使用Gson库来解析JSON字符串。Gson提供了fromJson()方法将JSON字符串转换为Java对象,但是如果JSON字符串中某个字段为空,fromJson()方法会将该字段解析为null值。为了让漏避免这种情况,可以使用GsonBuilder类中的setLenient()方法来禁仿坦用该特性,这样在解析JSON字符串时如果发现某个字段为空,就会抛出异常。
另外,还可以使用Jackson库来解析JSON字符串。Jackson库提供了ObjectMapper类来进行JSON与Java对象之间的转换。可以使用它的setSerializationInclusion()方法来设置序列化规则,如果字段值为null则忽略该字段,如果字段值为非null则进行序列化。
因此,为了确保JSON字符串里面的字段不为空,可以使用Gson或Jackson库提供的相关方法或设置。
java : json 过滤不合法字符的工具包工具类工具
json中没有自带的过滤不合法字符的工具类,需要用户自己编写。
将源数据中的'、"、\\、空格、换行等都替换成转义符,这样巧颤你隐宽液拼接的json数据就是正常的,显示出来格式和数据库中的一样。
function valueReplace(v) {
if (v.indexOf("\""灶物) != -1) {
v = v.toString().replace(new RegExp('(["\"])', 'g'), "\\\"");
}
else if (v.indexOf("\\") != -1)
v = v.toString().replace(new RegExp("([\\\\])", 'g'), "\\\\");
return v;
}
关于json工具类和java json工具的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。