`

java与json互相转换(解决日期和去除属性问题)

 
阅读更多
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。本文主要讲解下java和JSON之间的转换,特别是解决互相转换遇到日期问题和指定属性的过滤。
    一、需要相关的jar包:
     json-lib-xxx.jar
    ezmorph-xxx.jar
    commons-httpclient-xxx.jar
    commons-lang-xxx.jar
    commons-logging-xxx.jar
    commons-collections-xxx.jar
    上面的包可以从下面的连接下载:
    http://commons.apache.org/index.html
    http://json-lib.sourceforge.net
    http://ezmorph.sourceforge.net
   二、java-》JSON
     1.List-》JSON
Java代码 
List<String> list = new ArrayList<String>(); 
        list.add("apple"); 
        list.add("orange"); 
        JSONArray jarr = JSONArray.fromObject(list); 
        System.out.println("list->json:" + jarr.toString()); 

    打印结果:list->json:["apple","orange"]
     2.Map-》JSON
Java代码 
Map<String, Object> map = new HashMap<String, Object>(); 
        map.put("name", "Michael"); 
        map.put("baby", new String[] { "Lucy", "Lily" }); 
        map.put("age", 30); 
        JSONObject jo = JSONObject.fromObject(map); 
        System.out.println("map->json:" + jo.toString()); 

    打印结果:map->json:{"age":30,"name":"Michael","baby":["Lucy","Lily"]}
    3.bean->JSON
Java代码 
JsonBean bean = new JsonBean(); 
        bean.setName("NewBaby"); 
        bean.setAge(1); 
        bean.setBorn(new Date()); 
        jo = JSONObject.fromObject(bean); 
        System.out.println("bean->json:" + jo.toString()); 

   打印结果:bean->json:{"age":1,"born":{"date":10,"day":3,"hours":14,"minutes":14,"month":2,"seconds":1,"time":1268201641228,"timezoneOffset":-480,"year":110},"name":"NewBaby"}
    4.bean->JSON 日期转换
   上面的例子中你会发现它把bean对象里的util.Date这个类型的所有属性一一转换出来。在实际运用过程中,大多数情况下我们希望能转化为yyyy-MM-dd这种格式,下面就讲一讲如何实现:
   首先要写一个新的类JsonDateValueProcessor如下:
Java代码 
/**
* JSON 日期格式处理(java转化为JSON)
* @author Michael sun
*/ 
public class JsonDateValueProcessor implements JsonValueProcessor { 
 
    /**
     * datePattern
     */ 
    private String datePattern = "yyyy-MM-dd"; 
 
    /**
     * JsonDateValueProcessor
     */ 
    public JsonDateValueProcessor() { 
        super(); 
    } 
 
    /**
     * @param format
     */ 
    public JsonDateValueProcessor(String format) { 
        super(); 
        this.datePattern = format; 
    } 
 
    /**
     * @param value
     * @param jsonConfig
     * @return Object
     */ 
    public Object processArrayValue(Object value, JsonConfig jsonConfig) { 
        return process(value); 
    } 
 
    /**
     * @param key
     * @param value
     * @param jsonConfig
     * @return Object
     */ 
    public Object processObjectValue(String key, Object value, 
            JsonConfig jsonConfig) { 
        return process(value); 
    } 
 
    /**
     * process
     * @param value
     * @return
     */ 
    private Object process(Object value) { 
        try { 
            if (value instanceof Date) { 
                SimpleDateFormat sdf = new SimpleDateFormat(datePattern, 
                        Locale.UK); 
                return sdf.format((Date) value); 
            } 
            return value == null ? "" : value.toString(); 
        } catch (Exception e) { 
            return ""; 
        } 
 
    } 
 
    /**
     * @return the datePattern
     */ 
    public String getDatePattern() { 
        return datePattern; 
    } 
 
    /**
     * @param pDatePattern the datePattern to set
     */ 
    public void setDatePattern(String pDatePattern) { 
        datePattern = pDatePattern; 
    } 
 


测试代码:
Java代码 
JsonBean bean = new JsonBean(); 
        bean.setName("NewBaby"); 
        bean.setAge(1); 
        bean.setBorn(new Date()); 
 
        JsonConfig jsonConfig = new JsonConfig(); 
        jsonConfig.registerJsonValueProcessor(Date.class, 
                new JsonDateValueProcessor()); 
 
        JSONObject jo = JSONObject.fromObject(bean, jsonConfig); 
        System.out.println("bean->json:" + jo.toString()); 

  打印结果:bean->json:{"age":1,"born":"2010-03-10","name":"NewBaby"}
  这就能得到我们想要的结果了。
4.java->JSON 过滤指定的属性
Java代码 
JsonBean bean = new JsonBean(); 
        bean.setName("NewBaby"); 
        bean.setAge(1); 
        bean.setBorn(new Date()); 
        jo = JSONObject.fromObject(bean); 
 
        JsonConfig jsonConfig = new JsonConfig(); 
 
        PropertyFilter filter = new PropertyFilter() { 
            public boolean apply(Object source, String name, Object value) { 
                if ("born".equals(name)) { 
                    return true; 
                } 
                return false; 
            } 
        }; 
        jsonConfig.setJsonPropertyFilter(filter); 
 
        njo = JSONObject.fromObject(bean, jsonConfig); 
        System.out.println("bean->json [add property filter] :" 
                + njo.toString()); 

打印结果:bean->json [add property filter] :{"age":1,"name":"NewBaby"}
从执行结果可以看出:born 这个属性已经成功过滤掉了。
三、JSON-》java
  1.如何把json的yyyy-MM-dd的转换为Bean中的util.Date类型:

Java代码 
JSONUtils.getMorpherRegistry().registerMorpher( 
                new DateMorpher(new String[] { "yyyy-MM-dd" })); 
 
        String jsonStr = "[{\"name\": \"husband\", \"age\": \"26\", \"born\": \"1984-01-12\"},{\"name\": \"wife\", \"age\": \"20\", \"born\": \"1990-05-01\"}]"; 
 
        Collection<JsonBean> list = JSONArray.toCollection(JSONArray 
                .fromObject(jsonStr), JsonBean.class); 
      //DateUtil.getFormatDate(date,fmtstr)日期转字符串这里不再写代码了 
        for (JsonBean o : list) { 
            System.out.println(DateUtil 
                    .getFormatDate(o.getBorn(), "yyyy-MM-dd")); 
        } 

  打印结果:
           1984-01-12
          1990-05-01
   2. JSON-》List、 Map
Java代码 
String listStr = "[\"apple\",\"orange\"]"; 
        Collection<String> strlist = JSONArray.toCollection(JSONArray 
                .fromObject(listStr)); 
        for (String str : strlist) { 
            System.out.println(str); 
        } 
 
        String mapStr = "{\"age\":30,\"name\":\"Michael\",\"baby\":[\"Lucy\",\"Lily\"]}"; 
        Map<String, Object> map = (Map) JSONObject.toBean(JSONObject 
                .fromObject(mapStr), Map.class); 
        for (Entry<String, Object> entry : map.entrySet()) { 
            System.out.println(entry.getKey() + "  " + entry.getValue()); 
        } 

  打印结果:
            apple
           orange
           name  Michael
           age  30
           baby  [Lucy, Lily]
分享到:
评论

相关推荐

    java与json互相转换的jar包

    Java与JSON互相转换是开发过程中常见的需求,尤其是在服务器端与前端之间传递数据时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读性、易写性和高效性,被广泛应用于Web服务。Java则是...

    JAVA-JSON工具转换类

    总的来说,`JAVA-JSON工具转换类`这个主题涵盖了JSON数据处理的核心部分,包括JSON的序列化和反序列化,以及数据类型的转换。通过`json-lib`和`ezmorph`这两个库,开发者可以轻松地在Java程序中处理JSON数据,而`...

    JSON转换为JAVA对象及日期格式转换处理 -

    JSON转换为JAVA对象及日期格式转换处理 -

    json格式与java类对象相互转换

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛用于前后端交互,而Java作为后端开发的主要语言,常常需要将JSON格式的数据与Java类对象进行相互转换,以便于数据的处理和传输。Jackson库是...

    java XML 和json 转换工具类

    java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和json 转换工具类java XML 和json 转换工具类 java XML 和...

    java实现Xml与json之间的相互转换操作示例

    java实现Xml与json相互转换的必要性:在Web开发中,我们经常需要在前后端之间进行数据的交换,由于后端和前端使用的数据格式可能不同,这时候就需要实现数据格式的转换,尤其是在使用Java作为后端开发语言时,如何将...

    JSON与Java互相转换Demo(Eclipse)

    在Java中,我们常常需要将JSON字符串与Java对象之间进行转换,以便于数据的传输和处理。本示例提供了在Eclipse环境下实现JSON与Java对象互转的代码演示。 首先,我们要了解两个关键的Java库:org.json和...

    XML、JAVA、JSON多种方式互相转换

    下面我们将详细探讨XML、Java与JSON的转换方法。 1. XML到JSON转换: - 使用Java的Jackson库:Jackson库中的`com.fasterxml.jackson.databind.ObjectMapper`类提供了将XML转换为JSON的功能。首先,我们需要解析XML...

    form数据与json对象的互相转换(完整版)

    form数据与json对象的互相转换(完整版) * 将web Form 的数据转化成json字符串 * 将json对象的值解析后填入web Form 在AJAX开发中这是关键技术: 1、将form中的数据利用本工具转换成json格式的字符串,再通过ajax传...

    处理JSON日期转换

    在处理JSON数据与Java对象之间的转换时,常常会遇到日期格式不匹配的问题。JSON标准并未规定日期的特定格式,导致在不同的系统间进行数据交换时可能会出现解析异常。本问题中,开发人员自定义了一个名为`JsonUtil`的...

    Java bean转换为Json Schema

    Java Bean转换为Json Schema是一种常见的数据转换操作,特别是在开发基于RESTful API的Web服务时,因为JSON Schema提供了数据验证和文档化的功能。Java Bean是Java编程中的一个概念,它是一类具有特定规则的POJO...

    Java对象与Json之间的互相转换的jar包

    这个"Java对象与Json之间的互相转换的jar包"正是提供了这样的功能。 这个jar包可能包含了如Jackson、Gson、Fastjson等流行的Java JSON库,它们各自提供了丰富的API来方便开发者进行对象与JSON的转换。 1. Jackson...

    java的xml和json相互转换工具类,亲测直接用

    在Java开发中,XML(可扩展标记语言)和JSON...在`XmlToJson.java`这个工具类中,我们展示了如何利用Jackson库进行XML与JSON之间的转换。这只是一个基础示例,实际项目中可能需要进行更复杂的错误处理和数据验证。

    java 对象与json字符串互相转换工具类

    在Java开发中,数据交换和存储经常涉及到对象与JSON字符串之间的转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Java提供了多种库来实现对象与...

    Json与java对象之间相互转换源码

    在Java中,我们经常需要将JSON字符串与Java对象进行相互转换,以便于数据的传输和处理。本篇文章将详细探讨这个过程,以及如何使用常见的Java JSON库,如Gson和Jackson,进行JSON与Java对象的转换。 首先,让我们...

    java中json解析转换需要的jar包和依赖包

    `json-lib`是一个Java实现的JSON处理器,支持多种Java数据类型与JSON对象之间的转换,包括基本类型、集合、日期等。它还支持将XML转换为JSON,反之亦然,极大地增强了JSON的使用范围。 2. `commons-collections-...

    Java组装json和java解析json数组

    附件内容为:Java组装map数据,然后转换为json数据格式;Java解析json数据

    使用jackson完成json与java对象的互相转换实例

    通过理解和掌握上述知识点,开发者可以有效地在Java对象与JSON之间进行数据转换,从而提升开发效率和代码质量。在实际项目中,根据需求选择适当的序列化和反序列化策略,可以更好地满足业务需求。

    JSON与JAVA数据的转换

    JSON(JavaScript Object ...总之,理解并掌握Java与JSON之间的转换是Java开发者必备的技能,这有助于更好地进行数据交互和处理。通过选择合适的库,并熟悉其API,可以在项目中高效地实现JSON的序列化和反序列化。

    java 解析 json文件 java 解析 json文件

    Java解析JSON文件是Java开发中常见的一项任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁和易于阅读及编写的特点,被广泛应用于网络数据传输...

Global site tag (gtag.js) - Google Analytics