加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Jons处理工具类JsonKit

发布时间:2020-12-16 18:51:40 所属栏目:百科 来源:网络整理
导读:介绍 在平时开发过程中,经常需要对json进行操作,比如我最近都忙于第3方电商平台(天猫,京东、淘宝、唯品会、苏宁、小红书、寺库、网易考拉)进行对接(主要包括商品同步,库存,订单对接),除了 天猫,京东、淘宝、唯品会、苏宁 电商渠道对接各自都会提

介绍

在平时开发过程中,经常需要对json进行操作,比如我最近都忙于第3方电商平台(天猫,京东、淘宝、唯品会、苏宁、小红书、寺库、网易考拉)进行对接(主要包括商品同步,库存,订单对接),除了天猫,京东、淘宝、唯品会、苏宁电商渠道对接各自都会提供一套封装好的sdk,然而小红书、寺库、网易考拉的对接是没有提供sdk进行开发,现在的操作方式 是通过调用http请求,通过put、post、get方式发送请求,请求成功后,会返回一个json格式的字符串。

如寺库调用secoo.brand.list接口获取品牌信息时

请求参数:
{format=JSON,method=secoo.brand.list,productCategoryId=31,sign=E3D796A63BFF2DFD34F408B6B10532E7,signMethod=md5,timestamp=2017-09-27 16:51:55,v=1.0,vendorCode=3059}

返回的json

{"codeMsg":"SUCCESS","data":[{"cnName":"路易威登","enName":"Louis Vuitton","id":2},{"cnName":"卡地亚","enName":"CARTIER","id":9},{"cnName":"赛琳","enName":"CELINE","id":10},{"cnName":"登喜路","enName":"DUNHILL","id":13},{"cnName":"菲拉格慕","enName":"Salvatore Ferragamo","id":16},{"cnName":"兰姿","enName":"LANCEL","id":22},{"cnName":"葆蝶家","enName":"Bottega Veneta","id":35},{"cnName":"圣罗兰","enName":"Yves saint Laurent","id":36},{"cnName":"万宝龙","enName":"MontBlanc","id":38},{"cnName":"巴黎世家","enName":"Balenciaga","id":40},{"cnName":"托德斯","enName":"Tod’s","id":41},{"cnName":"橘滋","enName":"Juicy Couture","id":42},{"cnName":"波士","enName":"BOSS","id":46},{"cnName":"都彭","enName":"S.T. DUPONT","id":75},{"cnName":"乔治阿玛尼","enName":"Giorgio Armani","id":85},{"cnName":"蒂芙尼","enName":"Tiffany & Co.","id":88},{"cnName":"盖尔斯","enName":"Guess","id":98},{"cnName":"楚莎迪","enName":"Trussardi","id":101},{"cnName":"吉尔·桑达","enName":"Jil Sander","id":112},........}],"code":200}

每个接口返回的都是类似的json字符串,为了方便对json字符串操作,一般都会先把json格式的字符串转化成对应的javabean对象或者一个javabean的list的对象。
有的时候可能会讲bean、list对象转换成json字符串以便在不同系统之间进行传输。鉴于此非常有必要对json字符串的操作进行一个封装,因此产生了jsonkit工具类。

JsonKit详解

主要包括4个方法
1、toBean 将json转成bean
2、toList 将json转换成List
3、toJson(Object bean) 将bean转成json
4、toJson(List list)

package com.trendy.fw.common.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonKit {
    private static JsonFactory jsonFactory = new JsonFactory();

    private static ObjectMapper mapper = null;

    static {
        jsonFactory.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES,true);
        jsonFactory.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES,true);
        mapper = new ObjectMapper(jsonFactory);
    }

    /** * 获取jackson json lib的ObjectMapper对象 * * @return ObjectMapper对象 */
    public static ObjectMapper getObjectMapper() {
        return mapper;
    }

    /** * 获取jackson json lib的JsonFactory对象 * * @return JsonFactory对象 */
    public static JsonFactory getJsonFactory() {
        return jsonFactory;
    }

    /** * 将json转成bean * * @param <T> * 多态类型 * @param json * json字符串 * @param clazz * java bean类型(Class) * @return java bean对象 */
    public static <T> T toBean(String json,Class<T> clazz) {
        T bean = null;
        try {
            bean = mapper.readValue(json,clazz);
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalArgumentException(e);
        }
        return bean;
    }

    /** * 将json转换成List * * @param json * json字符串 * @param clazz * java bean类型(Class) * @return */
    public static <T> List<T> toList(String json,Class<T> clazz) {
        List<T> list = new ArrayList<T>();

        List<HashMap<String,Object>> jsonList = toBean(json,ArrayList.class);
        for (HashMap<String,Object> map : jsonList) {
            try {
                list.add(mapper.convertValue(map,clazz));
            } catch (Exception e) {
                e.printStackTrace();
                throw new IllegalArgumentException(e);
            }
        }
        return list;
    }

    /** * 将bean转成json * * @param bean * java bean * @return json 字符串 */
    public static String toJson(Object bean) {

        String rtv = null;
        try {
            rtv = mapper.writeValueAsString(bean);
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalArgumentException(e);
        }
        return rtv;
    }

    /** * 将List转换成json * * @param list * @return */
    public static String toJson(List<Object> list) {
        String rtv = null;
        StringBuffer sb = new StringBuffer();
        try {
            for (Object bean : list) {
                if (sb.length() > 0) {
                    sb.append(",");
                }
                sb.append(mapper.writeValueAsString(bean));
            }
            rtv = "[" + sb.toString() + "]";
        } catch (Exception e) {
            e.printStackTrace();
            throw new IllegalArgumentException(e);
        }
        return rtv;
    }
}

备注:以上代码需要依赖jackson json jar包

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读