package cn.com.shopec.app.common; import cn.com.shopec.core.common.PageFinder; import cn.com.shopec.core.common.Query; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.*; import java.io.Serializable; import java.lang.reflect.Type; import java.util.*; /** * Created by guanfeng.li on 2016/7/8. * APP接口返回实体类 */ public class Result implements Serializable { //状态码 private String status = "200"; //消息提示 private String msg = ""; //响应数据 private Object data; //分页 private PageFinder page; //json格式化 private SerializeConfig jsonConfig; //json 特性配置 private Set<SerializerFeature> jsonFeatures; //json 属性过滤 private Set<SerializeFilter> jsonFilter; public Result() { } public Result(Object data, Query query, long rowCount) { this.data = data; this.page = new PageFinder<>(query.getPageNo(), query.getPageSize(), rowCount); } public Result(String status, String msg, Object data) { this.status = status; this.msg = msg; this.data = data; } public Result(Object data) { this.data = data; } public Result(Object data,PageFinder page) { this.data = data; this.page = page; } /** * Created by guanfeng.li 2016/7/19 * 特性配置 */ public Result addSerializerFeature(SerializerFeature... serializerFeatures) { addSerializerFeature(3, serializerFeatures); return this; } /** * Created by guanfeng.li 2016/7/19 * 特性配置 */ public Result addSerializerFeature(int size, SerializerFeature... serializerFeatures) { if (jsonFeatures == null) { jsonFeatures = new HashSet<>(size); } for (SerializerFeature item : serializerFeatures) { jsonFeatures.add(item); } return this; } /** * Created by guanfeng.li 2016/7/19 * json 属性过滤 */ public Result addSerializeFilter(Class<?> clazz, String properties) { addSerializeFilter(3, clazz, properties, true); return this; } /** * Created by guanfeng.li 2016/7/19 * json 属性过滤 */ public Result addSerializeFilter(int size,SerializeFilter filter) { if (jsonFilter == null) { jsonFilter = new HashSet<>(size); } jsonFilter.add(filter); return this; } /** * Created by guanfeng.li 2016/7/19 * json 属性过滤 */ public Result addSerializeFilter(SerializeFilter filter) { return addSerializeFilter(3,filter); } /** * Created by guanfeng.li 2016/7/19 * json 属性过滤 */ public Result addSerializeFilter(Class<?> clazz, String properties, boolean isinclude) { addSerializeFilter(3, clazz, properties, isinclude); return this; } /** * Created by guanfeng.li 2016/7/19 * json 属性过滤 */ public Result addSerializeFilter(int size, Class<?> clazz, String properties, boolean isinclude) { if (jsonFilter == null) { jsonFilter = new HashSet<>(); } if(clazz!=null && properties==null){ jsonFilter.add(new SimplePropertyPreFilter(clazz)); return this; } if(clazz==null && properties!=null){ jsonFilter.add(new SimplePropertyPreFilter(properties.split(","))); return this; } if (!isinclude) { SimplePropertyPreFilter filter = new SimplePropertyPreFilter(clazz); filter.getExcludes().addAll(Arrays.asList(properties.split(","))); jsonFilter.add(filter); } else { jsonFilter.add(new SimplePropertyPreFilter(clazz, properties.split(","))); } return this; } /** * Created by guanfeng.li 2016/7/19 * 过滤分页信息 */ public Result filterPage(){ addSerializeFilter(this.getClass(),"page",false); return this; } /** * Created by guanfeng.li 2016/7/19 * json格式化 */ public Result putSerializeConfig(Class cls, ObjectSerializer value) { putSerializeConfig(3, cls, value); return this; } /** * Created by guanfeng.li 2016/7/19 * json格式化 */ public Result putSerializeConfig(int size, Class cls, ObjectSerializer value) { if (jsonConfig == null) { jsonConfig = new SerializeConfig(size); } jsonConfig.put(cls, value); return this; } /** * Created by guanfeng.li 2016/7/19 * 空字符串显示 “” * 空集合 [] * 空Map {} * Number 0 */ public Result writeNullStringNumberListAsEmpty() { addSerializerFeature(5, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty, SerializerFeature.WriteNullNumberAsZero, SerializerFeature.WriteNullListAsEmpty); return this; } public Result writeNullStringAsEmpty() { addSerializerFeature(2, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullStringAsEmpty); return this; } public Result writeNullListAsEmpty() { addSerializerFeature(2, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty); return this; } public Result writeNullNumberAsZero() { addSerializerFeature(2, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullNumberAsZero); return this; } /** * Created by guanfeng.li 2016/7/19 * 漂亮格式化 */ public Result prettyFormat() { addSerializerFeature(SerializerFeature.PrettyFormat); return this; } //添加返回结果 public Result put(String key, Object value) { if (data == null) { data = new HashMap(); } else { if (!(data instanceof Map)) { return this; } } ((Map) data).put(key, value); return this; } public String getStatus() { return status; } public Result setStatus(String status) { this.status = status; return this; } public String getMsg() { return msg; } public Result setMsg(String msg) { this.msg = msg; return this; } public Object getData() { return data; } public void setData(Object data) { this.data = data; } public PageFinder getPage() { return page; } public Result setPage(PageFinder page) { this.page = page; return this; } public SerializeConfig getJsonConfig() { return jsonConfig; } public Set<SerializerFeature> getJsonFeatures() { return jsonFeatures; } public Set<SerializeFilter> getJsonFilter() { return jsonFilter; } @Override public String toString() { if (jsonFilter != null || jsonFeatures != null || jsonConfig != null) { addSerializeFilter(Result.class, "jsonConfig,jsonFeatures,jsonFilter", false); } SerializerFeature[] features = new SerializerFeature[jsonFeatures == null ? 0 : jsonFeatures.size()]; if (jsonFeatures != null) { jsonFeatures.toArray(features); } SerializeFilter[] filters = new SerializeFilter[jsonFilter == null ? 0 : jsonFilter.size()]; if (jsonFilter != null) { jsonFilter.toArray(filters); } String json; if (jsonConfig != null) { json = JSON.toJSONString(this, jsonConfig, filters, features); } else { json = JSON.toJSONString(this, filters, features); } return json; } }
相关推荐
在这个场景中,"SSH封装接口返回Json数据"意味着我们有一个接口,该接口在执行SSH任务后会返回结构化的Json数据。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读、易写、易解析的特点,在...
在返回JSON数据的方法上添加`@ResponseBody`注解,表示该方法的返回值应该直接写入HTTP响应体,而不是作为一个视图进行渲染。 4. 使用注解进行对象映射: 你可以使用Jackson提供的注解来定制对象的序列化和反序列...
`Product.java`和`ResponseInfo.java`可能是定义了数据模型的Java类,它们对应JSON数据结构中的对象。例如,`Product`类可能代表一个商品,包含如id、name、price等属性,而`ResponseInfo`可能是整个响应数据的容器...
总的来说,Spring MVC结合Fastjson可以方便地处理JSON数据的转换和返回,尤其对于处理复杂对象结构和循环引用的情况,Fastjson的性能和灵活性使其成为一种优秀的选择。同时,通过灵活配置Fastjson的序列化特性,可以...
本篇文章将深入探讨如何利用Spring创建RESTful服务,并有效地处理JSON数据的接收与返回。 首先,我们需要了解Spring MVC,它是Spring框架的一部分,专门用于构建Web应用。Spring MVC通过DispatcherServlet作为入口...
在Java开发中,JSON作为数据交换格式,被广泛应用在前后端交互、API接口开发以及存储等方面。Fastjson因其高效性能和简单易用的API,成为了许多开发者的首选。 **1. Fastjson的特性** - **速度优势**:Fastjson在...
2. **执行命令**:连接建立后,你可以通过SSH发送命令到服务器,例如执行一个返回JSON数据的脚本或者API接口。 3. **JSON解析**:服务器返回的通常是JSON格式的数据,这需要使用Android的内置库如`org.json`或第三...
Fastjson的核心功能在于将Java对象转换为JSON字符串,以及将JSON文本转换为对应的Java对象,极大地简化了Java开发者处理JSON数据的工作。 1. **Fastjson基本使用** - **序列化**: Fastjson可以将Java对象转换为...
在实际开发中,Fastjson通常被用来处理服务器返回的JSON数据,例如从RESTful API获取数据,或者在前后端交互中传递数据。其简洁的API和高性能使得它成为Java开发者的首选JSON库之一。 总之,Fastjson 1.2.2绿色版...
1、封装WeatherInfo实体类,对接口返回的结果进行映射的实体类 2、WeatherUtils类,负责调用第三方天气预报api接口处理的工具类,包括根据城市查询等,返回的格式是json 3、test类,对接口进行功能性测试
在RESTful接口设计中,返回JSON格式的数据已成为一种标准实践。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据由键值对组成,其键通常表示...
总之,FastJson在Android客户端解析JSON数据时表现出色,配合xUtils能方便地完成网络请求和数据处理。开发者可以根据具体需求选择适合的方法,优化代码性能,提高开发效率。在实际项目中,还需注意错误处理、数据...
3. **API接口开发**:构建RESTful API,供Android客户端调用。 【总结】 FastJSON为Android与ASP.NET系统的集成提供了一种高效且简便的解决方案。通过JSON的简洁数据格式和FastJSON的高性能处理,开发者可以轻松地...
1. 服务端:在服务端,通常使用HTTP协议提供RESTful API,通过返回JSON数据来与客户端进行数据交换。例如,使用Spring Boot框架,可以配置Controller返回JSON响应: ```java import org.springframework.web.bind....
火山引擎是字节跳动提供的一个全方位的开发平台,包括但不限于数据分析、推送服务、广告系统等,这些服务通常会通过API接口返回JSON格式的数据。 JSON数据的基本结构包含对象和数组两种。对象由一对大括号{}包围,...
在Java中,处理JSON数据通常依赖于第三方库,如Jackson、Gson或org.json。这些库提供了将Java对象转换为JSON字符串,以及将JSON字符串反序列化为Java对象的功能。项目源代码可能会包含如何创建JSON对象、解析JSON...
在Java Web环境中,JSON常用于服务器端与客户端之间的通信,例如API接口的数据传输。 在Java中,我们可以使用多种库来解析和生成JSON,如Jackson、Gson、org.json和Fastjson等。这里主要介绍Jackson和Gson这两个...
在处理复杂接口返回的数据时,FastJson能够优雅地处理嵌套的对象和数组,这对于现代Web服务和移动应用来说是非常关键的。 1. **序列化与反序列化** - **序列化**:即将Java对象转换为JSON字符串。例如,我们有一个...
对于服务器返回的JSON数据,要进行验证,避免XSS(跨站脚本)和CSRF(跨站请求伪造)攻击。 总结,Android客户端与服务器的JSON数据交互是移动应用开发中的关键环节,涵盖了网络请求、数据解析、文件操作等多个方面...
4. **移动应用开发**:特别是在Android和阿里云手机等移动平台上,Fastjson可以高效地处理JSON数据,提高应用的性能。 5. **消息队列(MQ)传输**:Fastjson可以用于序列化对象并发送至消息队列,接收端再进行反序列...