`

FastJson API接口消息返回JSON数据

    博客分类:
  • JAVA
阅读更多
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数据"意味着我们有一个接口,该接口在执行SSH任务后会返回结构化的Json数据。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读、易写、易解析的特点,在...

    后台接口返回json数据所需jar包和配置

    在返回JSON数据的方法上添加`@ResponseBody`注解,表示该方法的返回值应该直接写入HTTP响应体,而不是作为一个视图进行渲染。 4. 使用注解进行对象映射: 你可以使用Jackson提供的注解来定制对象的序列化和反序列...

    fastjson解析json.rar

    `Product.java`和`ResponseInfo.java`可能是定义了数据模型的Java类,它们对应JSON数据结构中的对象。例如,`Product`类可能代表一个商品,包含如id、name、price等属性,而`ResponseInfo`可能是整个响应数据的容器...

    springMVC利用FastJson接口返回json数据相关配置详解

    总的来说,Spring MVC结合Fastjson可以方便地处理JSON数据的转换和返回,尤其对于处理复杂对象结构和循环引用的情况,Fastjson的性能和灵活性使其成为一种优秀的选择。同时,通过灵活配置Fastjson的序列化特性,可以...

    Spring RESTful服务接收和返回JSON最佳实践

    本篇文章将深入探讨如何利用Spring创建RESTful服务,并有效地处理JSON数据的接收与返回。 首先,我们需要了解Spring MVC,它是Spring框架的一部分,专门用于构建Web应用。Spring MVC通过DispatcherServlet作为入口...

    fast json API+JAR

    在Java开发中,JSON作为数据交换格式,被广泛应用在前后端交互、API接口开发以及存储等方面。Fastjson因其高效性能和简单易用的API,成为了许多开发者的首选。 **1. Fastjson的特性** - **速度优势**:Fastjson在...

    SSH为android客户端返回json数据,demo2

    2. **执行命令**:连接建立后,你可以通过SSH发送命令到服务器,例如执行一个返回JSON数据的脚本或者API接口。 3. **JSON解析**:服务器返回的通常是JSON格式的数据,这需要使用Android的内置库如`org.json`或第三...

    fastjson.jar包

    Fastjson的核心功能在于将Java对象转换为JSON字符串,以及将JSON文本转换为对应的Java对象,极大地简化了Java开发者处理JSON数据的工作。 1. **Fastjson基本使用** - **序列化**: Fastjson可以将Java对象转换为...

    fastjson的jar包 绿色版

    在实际开发中,Fastjson通常被用来处理服务器返回的JSON数据,例如从RESTful API获取数据,或者在前后端交互中传递数据。其简洁的API和高性能使得它成为Java开发者的首选JSON库之一。 总之,Fastjson 1.2.2绿色版...

    java调用第三方天气预报实时API接口并解析数据【源码】

    1、封装WeatherInfo实体类,对接口返回的结果进行映射的实体类 2、WeatherUtils类,负责调用第三方天气预报api接口处理的工具类,包括根据城市查询等,返回的格式是json 3、test类,对接口进行功能性测试

    为什么rest接口返回json建议采用下划线形式,不要用驼峰

    在RESTful接口设计中,返回JSON格式的数据已成为一种标准实践。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON数据由键值对组成,其键通常表示...

    FastJson解析Android客户端

    总之,FastJson在Android客户端解析JSON数据时表现出色,配合xUtils能方便地完成网络请求和数据处理。开发者可以根据具体需求选择适合的方法,优化代码性能,提高开发效率。在实际项目中,还需注意错误处理、数据...

    用fastJSON实现安卓手机APP与ASP.NET系统集成研究.pdf

    3. **API接口开发**:构建RESTful API,供Android客户端调用。 【总结】 FastJSON为Android与ASP.NET系统的集成提供了一种高效且简便的解决方案。通过JSON的简洁数据格式和FastJSON的高性能处理,开发者可以轻松地...

    json数据解析

    1. 服务端:在服务端,通常使用HTTP协议提供RESTful API,通过返回JSON数据来与客户端进行数据交换。例如,使用Spring Boot框架,可以配置Controller返回JSON响应: ```java import org.springframework.web.bind....

    JSON数据解析.rar

    火山引擎是字节跳动提供的一个全方位的开发平台,包括但不限于数据分析、推送服务、广告系统等,这些服务通常会通过API接口返回JSON格式的数据。 JSON数据的基本结构包含对象和数组两种。对象由一对大括号{}包围,...

    java实现http请求以及解析json与java对象转换 项目源代码实例

    在Java中,处理JSON数据通常依赖于第三方库,如Jackson、Gson或org.json。这些库提供了将Java对象转换为JSON字符串,以及将JSON字符串反序列化为Java对象的功能。项目源代码可能会包含如何创建JSON对象、解析JSON...

    Java Json解析,Java Web Json解析,Java Web服务端获取Json数据,客户端通过HTTP获取Json数据

    在Java Web环境中,JSON常用于服务器端与客户端之间的通信,例如API接口的数据传输。 在Java中,我们可以使用多种库来解析和生成JSON,如Jackson、Gson、org.json和Fastjson等。这里主要介绍Jackson和Gson这两个...

    fastJson和网络请求

    在处理复杂接口返回的数据时,FastJson能够优雅地处理嵌套的对象和数组,这对于现代Web服务和移动应用来说是非常关键的。 1. **序列化与反序列化** - **序列化**:即将Java对象转换为JSON字符串。例如,我们有一个...

    Android客户端与服务器端的json数据交互(内含大量知识点)

    对于服务器返回的JSON数据,要进行验证,避免XSS(跨站脚本)和CSRF(跨站请求伪造)攻击。 总结,Android客户端与服务器的JSON数据交互是移动应用开发中的关键环节,涵盖了网络请求、数据解析、文件操作等多个方面...

    Fastjson介绍

    4. **移动应用开发**:特别是在Android和阿里云手机等移动平台上,Fastjson可以高效地处理JSON数据,提高应用的性能。 5. **消息队列(MQ)传输**:Fastjson可以用于序列化对象并发送至消息队列,接收端再进行反序列...

Global site tag (gtag.js) - Google Analytics