`

使用Json

阅读更多

一,什么是JSON?

       JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。同时也易于机器的解析和生产。它基于JavaScript,JSON采用完全独立语言的文本格式,这些特性使得JSON成为理想的数据交换语言

 

二,JSON格式的对象和数组。

     A.JSON对象   

        {属性名1:值1,属性名2:值2,属性名3:值3.....}

        如:{name:"张三",age:20}

        最外面用{},然后各个属性之间用“,”隔开。名称上可以使用双引号也可以使用单引号甚至可以不适用引号。

     B.JSON数组

       使用JSON格式来描述数组则使用“[]”,数组成员之间用“,”分隔

       如:

             ['足球','音乐','电影']

三,在服务端生成JSON格式的数据

      在AJAX应用中,如果要使用JSON格式的数据来代替XML,就必须要在服务器上生成JSON格式的数据,我们当然可以使用拼接字符串的方式来生成JSON的数据,但是这种方式代码量太大,而且容易出错,此时我们可以使用JSON-lib工具包将java中的集合或者对象转换为JSON格式的数据。JSON-lib 用于将Java中的JavaBean,map,collection,java数组和XML转换成JSON数据格式。

    A.数组,Collection集合转换

   

String[] users={"zhangsan","lisi","wangwu"};
JSONArray jsArray=JSONArray.fromObject(users);
System.out.println(jsArray.toString());

List<String> list=new ArrayList<String>();
list.add("aaaa");
list.add("bbbb");
list.add("ccccc");
jsArray=JSONArray.fromObject(list);
System.out.pritln(jsArray.toString());

输出结果:
["zhangsan","lisi","wangwu"]
["aaaa","bbbb","ccccc"]

   B.Map集合转换

 

Map<String,Object> map=new HashMap<String,Object>();
map.put("name","张三");
map.put("favorite",new String[]{"吃饭","睡觉","游戏"});
map.put("getFavorite","function(i){return this.favorite[i]}");

JSONObject jsObject=JSONObject.fromObject(map);
System.out.println(jsObject.toString());

输出:
{"getFavorite":function(i){return this.favorite[i]},
   "name":"张三",
   "favorite":["吃法”,"睡觉","游戏"]
 }

  C.JavaBean转换

 

public class Student{
    private String name;
    private int age;
   /*setter,getter方法 必须要有 且public*/
  
}

转换代码:
Student stu=new Student("张三",20);
JSONObject jsObject=JSONObject.fromObject(stu);
System.out.println(jsObject.toString());

输出:
{"age":20 , "name":"张三"}

 D.复合类型(比较常用)

 

public class Teacher{
    private String name;
    private Set<Student> students=new HashSet<Student>();
   //省掉构造方法和setter/getter
}
Teacher teacher=new Teacher("吴老师");
teacher.getStudents().add(new Student("张三",20));
teacher.getStudents().add(new Student("李四",20));
teacher.getStudents().add(new Student("王五",20));

JSONObject jsObject=JSONObject.fromObject(teacher);
System.out.println(jsObject.toString());

输出:
 {"name":"吴老师","students":[{"age":20,"name":"张三"},
                              {"age":20,"name":"李四"},
                              {"age":20,"name":"王五"},
                             ]
  }

 

特别注意:

  一个对象的某个属性为 Date 类型时候,转换后的格式为:{"date":10,"day":3,"hours":14,"minutes":14,"month":2,"seconds":1,"time":1268201641228,"timezoneOffset":-480,"year":110},"name":"NewBaby"}

这时你会发现它把bean对象里的util.Date这个类型的所有属性一一转换出来。在实际运用过程中,大多数情况下我们希望能转化为yyyy-MM-dd这种格式,下面就讲一讲如何实现:
   首先要写一个新的类JsonDateValueProcessor如下:

 

 

public class JsonDateValueProcessor implements JsonValueProcessor {  
    private String datePattern = "yyyy-MM-dd";
    public JsonDateValueProcessor() {
        super();
    }  
    public JsonDateValueProcessor(String format) {
        super();
        this.datePattern = format;
    }   
    public Object processArrayValue(Object value, JsonConfig jsonConfig) {
        return process(value);
    }

    public Object processObjectValue(String key, Object value,
            JsonConfig jsonConfig) {
        return process(value);
    }

    
    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 "";
        }

    }
    public String getDatePattern() {
        return datePattern;
    }
    public void setDatePattern(String pDatePattern) {
        datePattern = pDatePattern;
    }
}

 测试代码:

 

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"}
这就能得到我们想要的结果了。

 

0
0
分享到:
评论

相关推荐

    MFC使用json11解析JSON

    在本项目中,我们关注的是如何在MFC应用中使用json11库来解析和操作JSON数据。 json11是一个小型且易于使用的C++ JSON解析器和生成器,它提供了将JSON字符串转换为C++对象以及反之的过程。下面我们将详细讨论如何在...

    Java中使用Json

    本文将深入探讨在Java中如何使用JSON,以及其在实际开发中的应用场景。 首先,Java中处理JSON的主要工具有两个:Jackson和Gson。这两个库提供了API,可以帮助我们轻松地将Java对象转换为JSON字符串,以及将JSON字符...

    Ajax中使用JSON传输数据

    本篇文章将深入探讨在Ajax中如何使用JSON来传输数据,以及涉及到的相关工具和源码。 首先,让我们理解JSON的基本概念。JSON是一种基于JavaScript语法的数据表示方式,它可以表示数组、对象、数值、字符串等基本数据...

    使用json封装数据 html源代码

    描述中的“json的简单应用”表明我们将探讨JSON的基础用法,以及如何在一个具有增加和删除功能的例子中使用JSON。这通常涉及到动态网页开发,例如使用JavaScript或者jQuery库来实现用户界面的交互,通过解析JSON数据...

    MFC/VC控制台下使用json库

    本文将深入探讨如何在MFC/VC++控制台应用程序中集成并使用JSON库,以便更好地处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。 首先,我们...

    java使用Json所需要导入的所有jar包

    为了在Java程序中使用JSON,你需要引入一些特定的库,这些库提供了处理JSON对象的方法和功能。本资源包含的是"java使用Json所需要导入的所有jar包",确保了你在处理JSON数据时所需的全部依赖。 首先,最重要的库是`...

    JSP中如何使用JSON

    在这个“Google导航案例”中,我们将探讨如何在JSP中使用JSON来实现数据的交互。 首先,了解JSON的基本结构至关重要。JSON格式基于JavaScript语法,但它是独立于语言的。一个JSON对象以大括号{}包围,由键值对组成...

    java使用json的必备7个jar包

    在java中使用json需要引入以下六个jar包,分别为: commons-lang-2.4.jar commons-collections-3.2.1.jar commons-beanutils-1.8.3.jar json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging-1.1.3.jar ...

    java使用json需要的jar包(最新)

    标题"java使用json需要的jar包(最新)"指出,这是一个包含最新版本的Java JSON处理库的jar包。在Java世界中,常用的JSON库有Jackson、Gson、org.json和FastJSON等。这些库都提供了jar文件,供开发者导入到项目中使用...

    json文件是什么+为什么使用json文件+如何使用json文件

    为什么使用 JSON 文件?如何使用 JSON 文件? JSON 文件是什么? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,于 21 世纪初由 Douglas Crockford 提出。该格式旨在解决数据交换问题,提供了一...

    Delphi使用JSON

    标题 "Delphi 使用 JSON" 涉及到的是在 Delphi 开发环境中处理 JSON(JavaScript Object Notation)数据格式的方法。JSON 是一种轻量级的数据交换格式,它以易于人阅读和编写,同时也易于机器解析和生成。在 Delphi ...

    使用json-lib实现json与Java对象的互转

    要使用 `json-lib` 实现 JSON 与 Java 对象的互转,首先需要在项目中引入该库。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加如下依赖: ```xml &lt;groupId&gt;net.sf.json-lib&lt;/groupId&gt; &lt;artifactId&gt;json-lib...

    使用json-lib解析json所需要的jar

    使用json-lib解析json所需要的jar,包括: commons-beanutils-1.7.0.jar、commons-collections-3.2.jar、 commons-lang-2.4.jar、commons-logging-1.1.jar、 ezmorph-1.0.4.jar、json-lib-2.2.2-jdk15.jar

    Java中使用Json的net.sf.json包

    反过来,使用`JSONObject.fromObject()`或`JSONArray.fromObject()`可以将JSON字符串解析为Java对象: ```java JSONObject parsedObject = JSONObject.fromObject(jsonString); ``` 此外,`net.sf.json`库依赖于...

    使用JSON所需依赖包

    使用JSON时,所需要的依赖包:json-lib-2.4-jdk15.jar,commons-beanutils.jar,commons-httpclient.jar,commons-lang.jar,ezmorph.jar,morph-1.0.1.jar

    C#.net 使用json作为配置文件,解悉JSON示例

    这样,C#.NET项目就能方便地使用JSON文件作为配置来源,无论是简单的桌面应用还是复杂的Web应用,都可以通过JSON来管理各种配置信息,提高代码的可读性和维护性。通过这种方式,开发者能够快速地获取和修改应用程序...

    delphi 使用json 示例

    这个“delphi 使用json 示例”是一个很好的起点,帮助我们了解如何在Delphi中解析、生成和操作JSON。 首先,我们需要导入System.JSON单元,这是Delphi处理JSON的基础。在你的代码开头添加以下导入语句: ```delphi...

    使用JSON所需要的jar包

    使用JSON所需要的Jar包: commons-beanutils.jar commons-collections-3.1.jar commons-lang.jar commons-logging.jar ezmorph-1.0.6.jar json-lib-2.2.2-jdk15.jar

    android servlet使用JSON交换信息示例

    android端和servlet端使用JSON交换数据信息的简单小例子,部分代码在JSP环境下实现,搞过Java WEB开发(JSP)的程序员,应该对Servlet不陌生,Json目前也是流行技术,所以说这个例子将Android、Json、Servlet三者结合...

    使用json常用到的6个包

    使用json常用到的6个包,解决报org.apache.commons.collections.map.ListOrderedMap和org.apache.commons.lang.exception.NestableRuntimeException错误

Global site tag (gtag.js) - Google Analytics