导包jackson-databind

    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.11.3</version>
    </dependency>

方法一:创建jackson对象,调用方法转化为json

对象

  @ResponseBody
  @RequestMapping("/user1")
  public String user1() throws JsonProcessingException {
    //创建一个jackson对象,用来解析数据
    ObjectMapper mapper = new ObjectMapper();
    User user = new User(11, "rod", 22);
    //使用writeValueAsString方法将user转化为json对象
    return mapper.writeValueAsString(user);
  }

集合list

  @ResponseBody
  @RequestMapping("/user1")
  public String user2() throws JsonProcessingException {
    //创建一个jackson对象,用来解析数据
    ObjectMapper mapper = new ObjectMapper();
    User user = new User(11, "rod", 22);
    //使用writeValueAsString方法将user转化为json对象
    ArrayList<User> list = new ArrayList<>();
    list.add(user);
    return mapper.writeValueAsString(list);
  }

日期date

  @ResponseBody
  @RequestMapping("/user1")
  public String user1() throws JsonProcessingException {
    //创建一个jackson对象,用来解析数据
    ObjectMapper mapper = new ObjectMapper();
    //创建时间一个对象,java.util.Date ,没有格式化的date的秒来计算的,时间戳
    Date date = new Date();
    //自定义日期格式对象
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //日期格式化后,将我们的对象解析成为json格式
    return mapper.writeValueAsString(format.format(date));
  }

方式二:创建一个工具类,用来格式化json

没优化前:有两个参数,不是日期类,调用还要输入日期格式就麻烦

public class JsonUtils {
  //静态方法,拿来即用
  public static String getJson(Object object,String dateformat){
    ObjectMapper mapper = new ObjectMapper();
    //不使用时间差的方式  WRITE_DATE_KEYS_AS_TIMESTAMPS:将日期键作为时间戳写入 改为false
    mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS,false);
    SimpleDateFormat format = new SimpleDateFormat(dateformat);
    //指定日期格式
    mapper.setDateFormat(format);
    try {
      return mapper.writeValueAsString(object);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
    //如果有异常,就返回null
    return null;
  }
}

优化后的工具类:调用getJson,默认日期格式yyyy-MM-dd HH:mm:ss,其他对象正常调用一个参数的getJson就可以

public class JsonUtils {
  /**
   * 功能描述: 重载方法,只传入一个object就可以,默认的日期格式就是"yyyy-MM-dd HH:mm:ss"
   * @return java.lang.String
   */
  public static String getJson(Object object) {
    return getJson(object, "yyyy-MM-dd HH:mm:ss");
  }

  //静态方法,拿来即用,日期就输入格式,不是日期就调用上面的,就日期格式也不影响
  public static String getJson(Object object, String dateformat) {
    ObjectMapper mapper = new ObjectMapper();
    //不使用时间差的方式  WRITE_DATE_KEYS_AS_TIMESTAMPS:将日期键作为时间戳写入 改为false
    mapper.configure(SerializationFeature.WRITE_DATE_KEYS_AS_TIMESTAMPS, false);
    SimpleDateFormat format = new SimpleDateFormat(dateformat);
    //指定日期格式
    mapper.setDateFormat(format);
    try {
      //就是不是日期对象也不影响,都是正常调用了writeValueAsString方法
      return mapper.writeValueAsString(object);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
    //如果有异常,就返回null
    return null;
  }
}
GitHub 加速计划 / js / json
18
5
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:3 个月前 )
2d42229f * Support BSON uint64 de/serialization Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> * Treat 0x11 as uint64 and not timestamp specific Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> --------- Signed-off-by: Michael Valladolid <mikevalladolid@gmail.com> 4 天前
1809b3d8 Signed-off-by: Niels Lohmann <mail@nlohmann.me> 4 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐