Sturts2漏洞越来越多,所以博主特地放弃了Struts2,
开始使用Spring MVC,虽然各种不适应,但是还是解决了不少问题
为了解决Spring MVC和Json不和谐的问题,特地自己写了个JSONUtil对象,方便进行前台交互。
import java.beans.Introspector; import java.beans.PropertyDescriptor; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; public class JSONUtil { public static String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"; public static String serialize(Object o,StringBuffer s,Class<?>... parseClazz) throws Exception{ Class<?> clazz = o.getClass(); List<Class<?>> context = new ArrayList<Class<?>>(); for(Class<?> c :parseClazz){ context.add(c); } if(clazz.isArray()){ s.append("["); for(Object sub:(Object[])o){ JSONUtil.covert(sub, context, s, parseClazz); s.append(","); } s.delete(s.length()-1, s.length()); s.append("]"); } else if(o instanceof Collection<?>){ s.append("["); Collection<?> collection = (Collection<?>) o; for(Iterator<?> iterator = collection.iterator();iterator.hasNext();){ JSONUtil.covert(iterator.next(), context, s, parseClazz); s.append(","); } s.delete(s.length()-1, s.length()); s.append("]"); } else { s=JSONUtil.covert(o, context, s, parseClazz); } return s.toString(); } private static StringBuffer covert(Object o,List<Class<?>> context,StringBuffer s,Class<?>... parseClazz) throws Exception{ Class<?> clazz = o.getClass(); s.append("{"); PropertyDescriptor[] props = Introspector.getBeanInfo(clazz).getPropertyDescriptors(); for (PropertyDescriptor prop : props) { if (prop.getReadMethod() != null && prop.getReadMethod().invoke(o) != null&& !"class".equals(prop.getDisplayName())) { s.append("\"").append(prop.getName()).append("\"").append(":"); Object value = prop.getReadMethod().invoke(o); if(prop.getPropertyType() == String.class || prop.getPropertyType() == Boolean.class || prop.getPropertyType() == boolean.class || prop.getPropertyType() == Character.class || prop.getPropertyType() == char.class){ s.append("\"").append(value).append("\""); } else if (isWrapClass(prop.getPropertyType()) || prop.getPropertyType().isPrimitive()){ s.append(value); } else if(value.getClass() == java.util.Date.class || value.getClass() == java.sql.Date.class || value.getClass() == java.sql.Timestamp.class){ s.append("\"").append(new SimpleDateFormat(DATE_FORMAT).format(value)).append("\""); } else if(prop.getPropertyType() == clazz){ s.delete(s.lastIndexOf(","), s.length()); } else if(context.contains(prop.getPropertyType()) || (value.getClass().isArray() && ((Object[])value).length>0 && context.contains(((Object[])value)[0].getClass())) || value instanceof Collection<?>){ JSONUtil.serialize(value,s,parseClazz); } else { s.delete(s.lastIndexOf(","), s.length()); } s.append(","); } } s.delete(s.length()-1, s.length()); s.append("}"); return s; } private static boolean isWrapClass(Class<?> clazz){ try { return ((Class<?>)clazz.getField("TYPE").get(null)).isPrimitive(); } catch (Exception e){ return false; } } }
相关推荐
而JsonUtil工具类则是开发者为了简化JSON与Java对象之间的转换而创建的,它极大地提高了开发效率。本文将详细探讨JsonUtil及其相关库的使用和原理。 首先,JsonUtil工具类通常依赖于一些第三方库,如Jackson、Gson...
自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回数据进行脱敏 自定义注解结合Hutool对SpringBoot接口返回...
JSONUtil是Java中用于处理JSON数据的工具类,通常用于将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象。这个过程在Java中被称为对象序列化和反序列化。 Java的`JsonUtil`类通常是自定义的工具类,...
标题“Json转对象忽略大小写”所涉及的知识点主要是如何在Java中处理这种情况,让JSON解析器在转换JSON字符串到Java对象时忽略大小写。 描述中提到,开发人员在处理JSON时遇到了首字母大写的键,这通常会导致默认的...
JSONUtil工具类是Java开发中处理JSON数据的一种实用工具,它简化了JSON对象与Java对象之间的转换过程。在本文中,我们将深入探讨JSONUtil工具类的实现和使用方法,以及如何利用阿里巴巴的Fastjson库来增强JSON操作。...
这个方法可以将符合JSON格式的字符串解析成指定类型的Java对象,例如,将一个JSON字符串转换为自定义的User类实例。 2. **Json生成**: 反之,`toJson(Object obj)`方法则用于将Java对象转化为JSON字符串。这对于...
这个工具类“JsonUtil”是为了帮助开发者快速将Android中的实体类对象(Entity、VO、DTO、Model)转化为JSON字符串,方便进行网络请求或存储数据。 一、JsonUtil类的设计与实现 JsonUtil通常是一个静态类,包含一...
`JsonUtil.java` 文件很可能是一个自定义的工具类,它封装了Fastjson的一些常用操作,如将JSON字符串转换为Java对象,或者将Java对象转换为JSON字符串。下面是一些可能在`JsonUtil.java`中实现的方法: 1. `...
这些转换方法是通过自定义的`JSONUtil`类实现的,它没有依赖特定的JSON库,而是手动实现了对象到JSON字符串的转换。在实际项目中,开发者通常会选择已有的成熟库,如Jackson、Gson或FastJSON,它们提供了更强大、更...
博客链接中提到的ITEYE博客可能详细分析了`JsonUtils.java`的实现细节,包括如何处理复杂类型的序列化,如日期、集合和自定义对象,以及如何处理JSON序列化过程中的异常。 在实际开发中,理解`JsonUtils`的工作原理...
这里提到的`JsonUtil`可能是其中一个库的工具类,或者是一个自定义的工具类。这类工具类通常提供了一系列静态方法,方便开发者进行JSON与Java对象之间的相互转换。 1. **Jackson库**:Jackson是Java中最常用的JSON...
JSON(JavaScript Object Notation)是一种轻量级...记住,这只是一个基础示例,实际应用中可能需要处理更复杂的JSON结构,例如嵌套的对象和数组,这时可能需要自定义转换规则或使用更高级的JSON库,如Jackson或Gson。
`JSONUtil` 类就是一个这样的工具类,它提供了将Java对象转换为JSON对象的功能,并且特别地,它还支持Hibernate的延迟加载对象。 在描述中提到的`JSONUtil`类,它的主要功能是通过反射机制将Java对象转换为JSON格式...
- 提到的`JsonUtil.java`文件可能是博主自定义的工具类,封装了上述库的一些功能,以简化JSON操作。 - 它可能包含静态方法,如`toJson()`和`fromJson()`,以方便在项目中使用。 7. **注意事项** - JSON数据类型...
`JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`ezmorph`的封装,提供了简洁易用的API供开发者进行JSON操作。可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`...
- **应用场景**:设备间的通信、自定义协议的应用、游戏服务器、物联网设备等。 在`commonUtils-master`这个项目中,你可以找到这些工具类的源代码,学习它们的实现细节,以便在自己的项目中进行复用或参考。对于...
代码中定义了一个名为`JSONUtil`的工具类,它包含了一个核心方法`object2json`,该方法接受一个`Object`作为参数,并根据对象的类型将其转换为JSON字符串。以下是该方法的主要逻辑: 1. 如果对象为`null`,则返回空...
- **日期处理:**`JsonUtil`类集成了自定义的日期处理器`DateJsonValueProcessor`,以确保日期类型的正确转换。 - **依赖管理:**该类依赖于`net.sf.json`库,这是一个轻量级的JSON处理库。 #### 五、总结 通过上述...
综上所述,`JsonUtil`是一个自定义的工具类,它利用Java反射API实现了对包含public属性和父类属性的Java对象的JSON序列化和反序列化。理解和使用这个类需要对Java反射、JSON处理以及可能使用的库(如Jackson或Gson)...
`JsonUtil` 类是为了解决Java中JSON对象与Java对象之间的转换问题。下面我们将详细探讨这个类中的三个主要方法: 1. `getObject4JsonString` 方法: 这个方法的作用是从一个JSON字符串转换为指定类型的Java对象。...