JSON中对Date的处理,以及一些Date类的简单用法!

有时候需要给前台返回一些json数据,或者一个json数组,通过json为我们提供的fromObject方法可以轻而易举的完整json数据的封装,但是但碰到一些联级属性(不知这样说妥不妥)时,例如记录时间的Date等,直接使用fromObject方法是会报错的,或者出现结果不是我们需要的格式的数据!

首先引入json的包,自己百度一下就好(我用的是json-lib),今天跟前辈请教时了解到了阿里云的一个fastjson这个包,还没有去研究,据说很强大,等我研究一下也会写一篇博客!(因为我都是一次导入很多个常用的包的,所以也不截图了,不过现在也渐渐开始用maven写项目了)

首先需要实现json为我们提供的JsonValueProcessor接口,指定Date类型的处理方式!代码来自百度

package com.loger.test;

import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class JsonDateValueProcessor implements JsonValueProcessor {

    // 定义转换日期类型的输出格式
    private String format = "yyyy-MM-dd";  

    public JsonDateValueProcessor() {  

    }  

    public JsonDateValueProcessor(String format) {
         this.format = format;
    }  

    @Override
    public Object processArrayValue(Object arg0, JsonConfig arg1) {
        return process(arg0);
    }  

    private Object process(Object arg0) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(arg0);
    }  

    @Override
    public Object processObjectValue(String key, Object value,
            JsonConfig jsonConfig) {
        if (value instanceof java.util.Date) {
            String str = new SimpleDateFormat(format).format((Date) value);
            return str;
        }
        if (null != value) {
            return value.toString();
        }
        return "";
    }
}

测试JSONArray:

package com.loger.test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.loger.entity.UserDate;

import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;

public class JSONArrayTestForDate {
    public static List<UserDate> list = new ArrayList<>();
    static {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
        Date birthday;
        try {
            birthday = sdf.parse("1995-09-01");
            System.out.println(birthday);
            list.add(new UserDate("chenle",birthday));
            list.add(new UserDate("chenle",birthday));
            list.add(new UserDate("chenle",birthday));
            list.add(new UserDate("chenle",birthday));
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    public static void main(String[] args) {

        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
        JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig);
        System.out.println(jsonArray);
    }
}

运行结果:

可以看到,日期已经按照指定的类型输出

测试JSONObject:

package com.loger.test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.loger.entity.UserDate;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;

public class JSONObjectTestForDate {

    public static void main(String[] args) throws ParseException {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
        UserDate user = new UserDate("chenle",sdf.parse("1995-09-01"));
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
        JSONObject jsonObject = new JSONObject();
        jsonObject = JSONObject.fromObject(user,jsonConfig);
        System.out.println(jsonObject);
    }

}

运行结果:

下面在测试不处理格式的结果:

不处理的结果也是这样的

另外说一下:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
User user = new User("chenle",sdf.parse("1995-09-01"));

日期的输入要用到以上格式,new Date("1995-09-01")这种方式显示已过期,而且会报错!

时间: 2024-08-19 04:36:53

JSON中对Date的处理,以及一些Date类的简单用法!的相关文章

cpp中vector动态数组(一种container)的简单用法

vector<int> num; for (int i=0; i<10; ++i)num.push_back(i); num.push_back(10); num.push_back(10); cout << "Original array:\n"; //vector<int>::iterator it; //C++11之前用的,11之后可以用auto for (auto it=num.begin(); it!=num.end(); ++it)

SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换

SpringMVC表单或Json中日期字符串与JavaBean的Date类型的转换 场景一:表单中的日期字符串和JavaBean的Date类型的转换 在使用SpringMVC的时候,经常会遇到表单中的日期字符串和JavaBean的Date类型的转换, 例如,如下代码S_ROLE_QO这个bean中包含有Date类型属性,不处理就拿不到值. /** * 分页取角色列表 * @param s_ROLE_QO 角色查询条件 * @return */ @RequestMapping(value = "/

SpringMVC返回Json,自定义Json中Date类型格式

http://www.cnblogs.com/jsczljh/p/3654636.html ———————————————————————————————————————————————————————————— SpringMVC返回Json,自定义Json中Date类型格式 SpringMVC返回Json数据依赖jackson这个开源的第三方类库. 若不加任何说明情况下Date类型将以时间戳的形式转换为Json并返回. jackson提供了一些自定义格式的方法.我们只需继承它的抽象类Json

数据库中的java.sql.Timestamp转换成Date

查询数据库中的时间类型为 java.sql.Timestamp 保存在json中需要格式化 自定义工具类  DateJsonValueProcessor 1 package com.rom.util; 2 3 import java.text.SimpleDateFormat; 4 5 import java.util.Date; 6 import java.util.Locale; 7 8 import net.sf.json.JsonConfig; 9 import net.sf.json.

Java &quot;JSON中无分隔符日期字符串处理&quot;

Json 中日期类型数据处理,服务端传输的日期没有分隔符,一般格式就两种,[20151212121212]即yyyyMMddhhmmss和[121212]hhmmss import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class test { public static void main(String[] arg

JSON中的日期格式化

Json字符串中的日期格式化函数 ConvertJsonDate: function (jd) { var d = new Date(parseInt(jd.replace("/Date(", "").replace(")/", ""), 10)); if (d.toString().split("-").length > 1) { return d; } var month = { "Ja

js json中的时间转换格式

//根据json中的日期格式,转换成yyyy-mm-dd HH:mm:ss function ChangeDateFormat(cellval) { var date = new Date(parseInt(cellval.replace("/Date(", "").replace(")/", ""), 10)); var month = date.getMonth() + 1 < 10 ? "0"

格式化JSON中时间

反台反回JSON中的时间一般是/Date(4234823478237423847)/这样一个格式,要让其正常显示用如下方法 function formatDatebox(value, format) { if (!value) { return ''; } var dt; if (value instanceof Date) { dt = value; } else { dt = new Date(value.replace("/Date(", "").replac

kbmmw 中JSON 中使用SQL 查询

前面讲到了kbmmw 的JSON 对象操作,如何快速的查找JSON 中的值? 一种办法就是通过遍历的方法,其实在kbmmw 还有一种灵活的查询方式, 就是通过SQL 方式查询JSON 中的值.也就是说用TKbmmwmemSQL 控件来实现. TKbmmwmemSQL 也可以用来查询 XML 和 CSV 文件,今天只说一下JSON 的查询. 我们首先在窗体中放一个Tkbmmwmemsql 控件, 如图设置其属性. 直接使用kbmmwmemSQL控件查询JSON , 首先需要把json串 保存成文本