一,什么是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"} 这就能得到我们想要的结果了。
相关推荐
在本项目中,我们关注的是如何在MFC应用中使用json11库来解析和操作JSON数据。 json11是一个小型且易于使用的C++ JSON解析器和生成器,它提供了将JSON字符串转换为C++对象以及反之的过程。下面我们将详细讨论如何在...
本文将深入探讨在Java中如何使用JSON,以及其在实际开发中的应用场景。 首先,Java中处理JSON的主要工具有两个:Jackson和Gson。这两个库提供了API,可以帮助我们轻松地将Java对象转换为JSON字符串,以及将JSON字符...
本篇文章将深入探讨在Ajax中如何使用JSON来传输数据,以及涉及到的相关工具和源码。 首先,让我们理解JSON的基本概念。JSON是一种基于JavaScript语法的数据表示方式,它可以表示数组、对象、数值、字符串等基本数据...
描述中的“json的简单应用”表明我们将探讨JSON的基础用法,以及如何在一个具有增加和删除功能的例子中使用JSON。这通常涉及到动态网页开发,例如使用JavaScript或者jQuery库来实现用户界面的交互,通过解析JSON数据...
本文将深入探讨如何在MFC/VC++控制台应用程序中集成并使用JSON库,以便更好地处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。 首先,我们...
为了在Java程序中使用JSON,你需要引入一些特定的库,这些库提供了处理JSON对象的方法和功能。本资源包含的是"java使用Json所需要导入的所有jar包",确保了你在处理JSON数据时所需的全部依赖。 首先,最重要的库是`...
在这个“Google导航案例”中,我们将探讨如何在JSP中使用JSON来实现数据的交互。 首先,了解JSON的基本结构至关重要。JSON格式基于JavaScript语法,但它是独立于语言的。一个JSON对象以大括号{}包围,由键值对组成...
在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库有Jackson、Gson、org.json和FastJSON等。这些库都提供了jar文件,供开发者导入到项目中使用...
为什么使用 JSON 文件?如何使用 JSON 文件? JSON 文件是什么? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,于 21 世纪初由 Douglas Crockford 提出。该格式旨在解决数据交换问题,提供了一...
标题 "Delphi 使用 JSON" 涉及到的是在 Delphi 开发环境中处理 JSON(JavaScript Object Notation)数据格式的方法。JSON 是一种轻量级的数据交换格式,它以易于人阅读和编写,同时也易于机器解析和生成。在 Delphi ...
要使用 `json-lib` 实现 JSON 与 Java 对象的互转,首先需要在项目中引入该库。如果你使用的是 Maven,可以在 `pom.xml` 文件中添加如下依赖: ```xml <groupId>net.sf.json-lib</groupId> <artifactId>json-lib...
使用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
反过来,使用`JSONObject.fromObject()`或`JSONArray.fromObject()`可以将JSON字符串解析为Java对象: ```java JSONObject parsedObject = JSONObject.fromObject(jsonString); ``` 此外,`net.sf.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文件作为配置来源,无论是简单的桌面应用还是复杂的Web应用,都可以通过JSON来管理各种配置信息,提高代码的可读性和维护性。通过这种方式,开发者能够快速地获取和修改应用程序...
这个“delphi 使用json 示例”是一个很好的起点,帮助我们了解如何在Delphi中解析、生成和操作JSON。 首先,我们需要导入System.JSON单元,这是Delphi处理JSON的基础。在你的代码开头添加以下导入语句: ```delphi...
使用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交换数据信息的简单小例子,部分代码在JSP环境下实现,搞过Java WEB开发(JSP)的程序员,应该对Servlet不陌生,Json目前也是流行技术,所以说这个例子将Android、Json、Servlet三者结合...
使用json常用到的6个包,解决报org.apache.commons.collections.map.ListOrderedMap和org.apache.commons.lang.exception.NestableRuntimeException错误