Json中的Date类型和Float类型的转换

    在项目中我发现在后台用的JsonArray中(在前台以json形式在jsp中获得后台传来的数据),如果有字段类型是Date或者Float,还有一些其它类型,传到前台显示的时候,date类型会显示成[Object Object],float类型的精度会变得不一样,这就要我们在后台对这些类型做一些处理了。下面我提供了2种处理的方式仅供参考。

第一种方式:写一个工具类:

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

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class JsonDateValueProcessor implements JsonValueProcessor {

    private String format = "yyyy-MM-dd HH:mm";

    @Override
    public Object processArrayValue(Object value, JsonConfig config) {
        return process(value);
    }

    @Override
    public Object processObjectValue(String key, Object value, JsonConfig config) {
        return process(value);
    }

    private Object process(Object value) {

        if (value instanceof Date) {
            SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.UK);
            return sdf.format(value);
        }
        return value == null ? "" : value.toString();
    }
}


然后将JSONArray转换:

JsonConfig jsonConfig = new JsonConfig();   
 jsonConfig.registerJsonValueProcessor(Date.class , new JsonDateValueProcessor());  
JSONArray ja = JSONArray.fromObject(newsList,jsonConfig);


第二种方式:

将要传到前台的List中的每一个对象全部转化为JSONObject类型:

JSONArray ja = new JSONArray();

for(int i = 0;i<newsList.size();i++){
            JSONObject jo = new JSONObject();
            jo.put(“newsName”,newsList.get(i).getNewsName() );

            ..........

            DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm");
            String s = df.format(newsList.get(i).getNewsTime());

            jo.put("newsTime",s);

            ja.add(jo);

 }

result = ja.toString();

最后将result传到前台

Float类型也是同理。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值