json转换大全 复制直接用

pom 包导入:

<!-- json解析 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>${fastjson.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${jackson-databind.version}</version>
    </dependency>

package com.sitech.pos.smartcitypayposcenter.util;

import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.node.ObjectNode;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;
import java.util.*;

/**

  • @author GZY json工具类
    */
    @Slf4j
    public class JsonUtils {

    private static SerializeConfig serialConfig = new SerializeConfig();

    private static SerializerFeature[] serialFeatures = null;

    private static final String DATE_FORMART = “yyyy-MM-dd HH:mm:ss”;

    static {

     //允许输出空属性
     serialFeatures = new SerializerFeature[]{SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty};
    
     //java.util.Date的转换
     serialConfig.put(Date.class, new SimpleDateFormatSerializer(DATE_FORMART));
    

    }

    /**

    • 普通json转map
    • 例子 {“phone_no”:“15074917062”,“order_date”:“20150316145250”,“imei”
    •  *                :"sasassdsadsadfdssf","external_order_id":"jd222233331",
      
    •  *                "op_type":"01","login_no":"jdop001","chn_code":"11221"}
      
    • @param
    • @return
      */
      public static Map<String, String> json2Map(String param) {
      Map<String, String> parameterMap = new LinkedHashMap<String, String>();
      if (param != null && !param.equals(“null”)) {
      if (param.length() > 2) {
      ObjectMapper objectMapper = new ObjectMapper();
      objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      try {
      parameterMap = objectMapper.readValue(param,
      new TypeReference<LinkedHashMap<String, String>>() {
      });
      } catch (Exception e) {
      log.error(“json解析异常” + param, e);
      }
      }
      }
      return parameterMap;
      }

    /**

    • 把JavaBean转换为json字符串

    • @param obj 要转的javabean

    • @return json串
      */
      public static String bean2json(Object obj) {

      if (obj == null){
      return “”;
      }
      ObjectMapper m = new ObjectMapper();
      m.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
      // 由于下面这行代码会导致bean中设置的json注解失效,所以注释掉
      // m.setAnnotationIntrospector(new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()));
      try {
      //return m.writeValueAsString(obj).replaceAll(“”“null”“|“null”|null”, “”“”);
      return m.writeValueAsString(obj);
      } catch (JsonProcessingException e) {
      // TODO Auto-generated catch block
      log.error(“json解JsonProcessingException异常”, e);
      }
      return “”;
      }

    /**

    • bean转普通json串
    • @param json 要转的josn
    • @return obj
      */
      public static Object readJson(String json, Class<?> clz) {
      return com.alibaba.fastjson.JSON.parseObject(json, clz);
      }

    /**

    • 使用泛型方法,把json字符串转换为相应的JavaBean对象。

    • (1)转换为普通JavaBean:readValue(json,Student.class)

    • (2)转换为List,如List,将第二个参数传递为Student

    • [].class.然后使用Arrays.asList();方法把得到的数组转换为特定类型的List

    • @param jsonStr

    • @param collectionClass

    • @return
      */
      @SuppressWarnings(“unchecked”)
      public static T readJson(String jsonStr, Class collectionClass,
      Class… elementClasses) {
      ObjectMapper mapper = new ObjectMapper();
      mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

      JavaType javaType = mapper.getTypeFactory().constructParametricType(
      collectionClass, elementClasses);

      try {
      return (T) mapper.readValue(jsonStr, javaType);
      } catch (JsonParseException e) {
      // TODO Auto-generated catch block
      log.error(“json解析JsonParseException异常”, e);
      } catch (JsonMappingException e) {
      // TODO Auto-generated catch block
      log.error(“json解析JsonMappingException异常”, e);
      } catch (IOException e) {
      // TODO Auto-generated catch block
      log.error(“json解析IOException异常”, e);
      }
      return null;

    }

    /**

    • json数组转List

    • @param jsonStr

    • @param valueTypeRef

    • @return
      */
      @SuppressWarnings(“unchecked”)
      public static T readValue(String jsonStr, TypeReference valueTypeRef) {
      ObjectMapper objectMapper = new ObjectMapper();
      objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

      try {
      return (T) objectMapper.readValue(jsonStr, valueTypeRef);
      } catch (Exception e) {
      log.error(“json解析Exception异常”, e);
      }

      return null;
      }

    /**

    • javabean转json串
    • @param obj 要转的javabean
    • @return json串
      */
      public static String simpleObjectToJsonStr(Object obj) {
      return toJsonStrByFastjson(obj);
      }

    /**

    • 将对象转化为Json String
    • @param obj
    • @return String
      */
      public static String toJson(Object obj) {
      return toJsonStrByFastjson(obj);
      }

    private static String toJsonStrByFastjson(Object obj) {
    try {
    return com.alibaba.fastjson.JSON.toJSONString(obj, serialConfig, serialFeatures);
    } catch (Exception e) {
    log.error(“转换JSON失败”, e);
    return “”;
    }
    }

    /**

    • javabean转json串
    • @param list <List<?>> 要转的javabean集合
    • @return json串
      */
      public static String simpleListToJsonStr(List<?> list) {
      if (list == null || list.size() == 0) {
      return “[]”;
      }
      return toJsonStrByFastjson(list);
      }

    public static String getNodeFromJson(String name, String json) {
    ObjectMapper objectMapper = new ObjectMapper();
    try {
    JsonNode node = objectMapper.readTree(json);
    JsonNode v = node.findValues(name).get(0);
    if (null != v) {
    if (v.isValueNode()) {
    return v.asText();
    } else {
    return v.toString();
    }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return “”;
    }

    /**

    • 向json的根目录下获取第一级的name对应的值
    • @param name
    • @param json
    • @return
      */
      public static String getNodeFromJsonRoot(String name, String json) {
      ObjectMapper objectMapper = new ObjectMapper();
      try {
      JsonNode node = objectMapper.readTree(json);
      JsonNode v = node.findValues(name).get(0);
      if (null != v) {
      if (v.isValueNode()) {
      return v.asText();
      } else {
      return v.toString();
      }
      }
      } catch (Exception e) {
      e.printStackTrace();
      }
      return “”;
      }

    /**

    • 向json的根目录下第一级的name设置对应的值value
    • @param name
    • @param value
    • @param json
    • @return
      */
      public static String setNodeValueToJsonRoot(String name, String value, String json) {
      ObjectMapper objectMapper = new ObjectMapper();
      try {
      JsonNode node = objectMapper.readTree(json);
      if (node instanceof ObjectNode) {
      ((ObjectNode) node).put(name, value);
      }
      return node.toString();
      } catch (Exception e) {
      e.printStackTrace();
      }
      return “”;
      }

    /**

    • 转换复杂类型json map 嵌套,list 不支持 jingcy

    • @param jsonString

    • @return
      */
      public static HashMap<String, Object> fromJson2Map(String jsonString) {
      HashMap jsonMap = com.alibaba.fastjson.JSON.parseObject(jsonString, HashMap.class);

      HashMap<String, Object> resultMap = new HashMap<String, Object>();
      for (Iterator iter = jsonMap.keySet().iterator(); iter.hasNext(); ) {
      String key = (String) iter.next();
      if (jsonMap.get(key) instanceof com.alibaba.fastjson.JSONObject) {
      resultMap.put(key, fromJson2Map(jsonMap.get(key).toString()));

       } else {
           Object o = jsonMap.get(key);
           resultMap.put(key, jsonMap.get(key));
       }
      

      }
      return resultMap;
      }

    /**

    • 转换复杂类型json map 嵌套,list 不支持 jingcy
    • @param map
    • @return
      */
      public static String fromMap2Json(Map map) {
      return com.alibaba.fastjson.JSON.toJSONString(map);
      }

    public static Object json2Object(String json, Class calssz) {
    return com.alibaba.fastjson.JSON.parseObject(json, calssz);
    }

    /**

    • 将 Map 转换为 JSON

    • @param map

    • @return
      */
      public static String mapToJson(Map map) {

      ObjectMapper objectMapper = new ObjectMapper();
      try {
      return objectMapper.writeValueAsString(map);
      } catch (Exception e) {
      e.printStackTrace();
      }
      return “”;
      }

    public static Map<String, Object> pojo2map(Object obj){
    ObjectMapper objectMapper = new ObjectMapper();
    Map<String, Object> map = objectMapper.convertValue(obj, Map.class);
    return map;
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值