All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.litongjava.tio.utils.json.Json Maven / Gradle / Ivy

There is a newer version: 3.7.3.v202400213-RELEASE
Show newest version
package com.litongjava.tio.utils.json;

import java.lang.reflect.Type;
import java.util.List;
import java.util.Map;
import java.util.Objects;

/**
 * json string 与 object 互转抽象
 */
public abstract class Json {

  // private static IJsonFactory defaultJsonFactory = new JFinalJsonFactory();
  private static IJsonFactory defaultJsonFactory = new MixedJsonFactory();

  /**
   * 当对象级的 datePattern 为 null 时使用 defaultDatePattern jfinal 2.1 版本暂定
   * defaultDatePattern 值为 null,即 jackson、fastjson 默认使用自己的 date 转换策略
   */
  private static String defaultDatePattern = "yyyy-MM-dd HH:mm:ss"; // null;
  // protected String timestampPattern = "yyyy-MM-dd HH:mm:ss";
  private static String timestampPattern = null;

  /**
   * Json 继承类优先使用对象级的属性 datePattern, 然后才是全局性的 defaultDatePattern
   */
  protected String datePattern = null;

  public static void setDefaultJsonFactory(IJsonFactory defaultJsonFactory) {
    Objects.requireNonNull(defaultJsonFactory, "defaultJsonFactory can not be null");
    Json.defaultJsonFactory = defaultJsonFactory;
  }

  public static IJsonFactory getJsonFactory() {
    return defaultJsonFactory;
  }

  public static void setDefaultDatePattern(String defaultDatePattern) {
    Json.defaultDatePattern = defaultDatePattern;
  }

  public Json setDatePattern(String datePattern) {
    this.datePattern = datePattern;
    return this;
  }

  public String getDatePattern() {
    return datePattern;
  }

  public String getDefaultDatePattern() {
    return defaultDatePattern;
  }

  public static Json getJson() {
    return defaultJsonFactory.getJson();
  }

  public static void setTimestampPattern(String timestampPattern) {
    Json.timestampPattern = timestampPattern;
  }

  public static String getTimestampPattern() {
    return timestampPattern;
  }

  public abstract String toJson(Object object);

  public abstract byte[] toJsonBytes(Object object);

  public abstract Object parse(String stringValue);

  public abstract  T parse(String jsonString, Class type);

  public abstract Object parseObject(String jsonString);

  public abstract Object parseArray(String jsonString);

  public abstract Map parseToMap(String json);

  public abstract  Map parseToMap(String json, Class kType, Class vType);

  public abstract  List> parseToListMap(String stringValue, Class kType, Class vType);

  public abstract  T parse(String body, Type type);

  public abstract  T parse(byte[] body, Type type);

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy