1.所依赖JAR包

要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包:

  1. commons-lang.jar
  2. commons-beanutils.jar
  3. commons-collections.jar
  4. commons-logging.jar
  5. ezmorph.jar
  6. json-lib-2.2.2-jdk15.jar

2.Demo

2.1 应用场景:

  • 后台的java类,如实体类、List、Set、Map转成json字符串发送到其它项目或者jsp端
  • jsp端或者其它项目发送过来的json字符串,需要解析成l实体类、List、Set、Map等java类

2.2 Student实体类

package json;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set; public class Student {
private int id;
private String name;
private String age;
private Date birthDay;
private List list;
private Set set;
private Map map;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
} public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
} public List getList() {
return list;
}
public void setList(List list) {
this.list = list;
}
public Set getSet() {
return set;
}
public void setSet(Set set) {
this.set = set;
} public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age
+ ", birthDay=" + birthDay + ", list=" + list + ", set=" + set
+ ", map=" + map + "]";
} }

2.3 java对象序列化成json对象时,处理日期的处理类

package json;

import java.text.SimpleDateFormat;
import java.util.Date; import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
*
* @author yangguojun
* java实体类转jsonObject时,日期处理类
*/
public class JsonDateValueProcessor implements JsonValueProcessor {
/**
* 集合中实体类日期处理
*/
@Override
public Object processArrayValue(Object value , JsonConfig config) {
// TODO Auto-generated method stub
return processor(value);
}
/**
* 当个实体类日期处理
*/
@Override
public Object processObjectValue(String propertyName, Object value, JsonConfig config) {
return processor(value);
}
/**
* 把日期对象转为字符串
* @param value
* @return
*/
private Object processor(Object value){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(value instanceof Date){
return format.format(value);
}
return value == null ? "":value.toString();
} }

2.4 测试类

package json;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet; import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig; public class JsonDemo {
public static void main(String[] args) {
//创建JSON对象的第一种方法
JSONObject jsonObj1 = new JSONObject();
jsonObj1.put("id", "1");
jsonObj1.put("name", "rose");
jsonObj1.put("age", 25);
System.out.println("jsonObj1"+jsonObj1);
//创建JSON对象的第二种方法
HashMap<String, Object> map = new HashMap<String,Object>();
map.put("id", "2");
map.put("name", "zhangsan");
map.put("age", "25");
JSONObject jsonObj2 = JSONObject.fromObject(map);
System.out.println("jsonObj2"+jsonObj2); //创建一个JsonArray方法1
JSONArray jsonArray = new JSONArray();
jsonArray.add(0, "ZHULI");
jsonArray.add(1, "30");
jsonArray.add(2, "ALI");
System.out.println("jsonArray1:" + jsonArray); //创建JsonArray方法2
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.add("柯文修");
arrayList.add("23");
arrayList.add("5");
System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList)); //创建一个复杂JSON对象(JSON对象里有JSON数组)
JSONObject jsonObj3 = new JSONObject();
jsonObj3.put("id", 3);
jsonObj3.put("name", "lisi");
jsonObj3.put("age", 23);
jsonObj3.put("arrayList", arrayList);
System.out.println("jsonObj3"+jsonObj3); //创建一个复杂JSON数组(JSON数组里含有JSON对象)、
JSONArray jsonArray3 = new JSONArray();
jsonArray3.add("4");
jsonArray3.add("wangwu");
jsonArray3.add("26");
jsonArray3.add(map);
System.out.println("jsonArray3"+jsonArray3);
//把JSON字符串转为JSON对象
String jsonString = "{\"id\":3,\"name\":\"lisi\",\"age\":23,\"arrayList\":[\"ZHULI\",\"30\",\"ALI\"]}";
JSONObject jsonObj4 = JSONObject.fromObject(jsonString);
System.out.println(jsonObj4.get("id")+"--"+jsonObj4.get("name")+"--"+jsonObj4.get("age")+
"--"+jsonObj4.get("arrayList"));
//java实体类转为JSONObject
Student stu = new Student();
stu.setId(1);
stu.setName("罗志茂");
stu.setAge("23");
stu.setBirthDay(new Date());
stu.setList(arrayList);
HashSet<Object> set = new HashSet<>();
set.add("6");
set.add("戚广辉");
set.add("25");
stu.setSet(set);
stu.setMap(map);
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
JSONObject jsonObj5 = JSONObject.fromObject(stu,jsonConfig);
System.out.println("序列化:"+jsonObj5);
//json转java实体类
Student student = (Student) JSONObject.toBean(jsonObj5, Student.class);
System.out.println("反序列化:"+student);
} }

2.5 测试结果

jsonObj1{"id":"1","name":"rose","age":25}
  jsonObj2{"id":"2","age":"25","name":"zhangsan"}
  jsonArray1:["ZHULI","30","ALI"]
  jsonArray2:["柯文修","23","5"]
  jsonObj3{"id":3,"name":"lisi","age":23,"arrayList":["柯文修","23","5"]}
  jsonArray3["4","wangwu","26",{"id":"2","age":"25","name":"zhangsan"}]
  3--lisi--23--["ZHULI","30","ALI"]
 序列化:{"age":"23","birthDay":"2016-08-13 23:22:27","id":1,"list":["柯文修","23","5"],"map":{"id":"2","age":"25","name":"zhangsan"},"name":"罗志茂","set":  ["戚广辉","6","25"]}
 反序列化:Student [id=1, name=罗志茂, age=23, birthDay=Sat Aug 13 23:22:27 CST 2016, list=[柯文修, 23, 5], set=[戚广辉, 6, 25], map={id=2,  name=zhangsan, age=25}]

JSONObject和JSONArray使用的更多相关文章

  1. json学习系列(6)JSONObject和JSONArray是JDK的集合部分延伸

    我一直觉得JSONObject和JSONArray是JDK集合部分的延伸,它们与JDK的List和Map一脉相承.通过研究JSONObject和JSONArray的结构,我们顺便也复习一下JDK的内容 ...

  2. JSONObject与JSONArray的使用

    1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...

  3. Java学习笔记50:JSONObject与JSONArray的使用

    Java不像PHP解析和生产JSON总是一个比较痛苦的过程.但是使用JSONObject和JSONArray会让整个过程相对舒服一些. 需要依赖的包:commons-lang.jar commons- ...

  4. Gson解析JsonObject和JsonArray

    Gson中重要的几个核心类: Gson.JsonParser.JsonObject.JsonArray. 下面就是解析的步骤: public void parserJsonArray(String s ...

  5. JSONObject和JSONArray

    点击下载json工具 点击下载支持jar包 1.从Object到String 要先用Object对象构造一个JSONObject或者JSONArray对象,然后调用它的toString()方法即可 ( ...

  6. [转]JSONObject与JSONArray的使用

    http://www.cnblogs.com/xwdreamer/archive/2011/12/16/2296904.html 参考文献: http://blog.csdn.net/huangwuy ...

  7. json:JSONObject与JSONArray的使用

    1.JAR包简介 要使程序可以运行必须引入JSON-lib包,JSON-lib包同时依赖于以下的JAR包: commons-lang.jar commons-beanutils.jar commons ...

  8. JSONObject和JSONArray区别及基本用法

    一.JSONObject和JSONArray的数据表示形式 JSONObject的数据是用 {  } 来表示的, 例如:   { "id" : "123", & ...

  9. fastjson如何判断JSONObject和JSONArray

    1.fastjson如何判断JSONObject和JSONArray,百度一下,教程还真不少,但是是阿里的fastjson的我是没有找到合适的方法.这里用一个还算可以的方法,算是实现了这个效果. 网上 ...

  10. JSONObject、JSONArray、Map、JavaBean的相互转换

    1,JSONObject json对象,就是一个键对应一个值,使用的是大括号{ },如:{key:value} 2,JSONArray json数组,使用中括号[ ],只不过数组里面的项也是json键 ...

随机推荐

  1. 动态创建Layout

    public Form1() { InitializeComponent(); AddLayoutItems1(); //初始化 } /// <summary> /// 1.一个方法(定义 ...

  2. Swift语法总结补充(一)

    Swift基础语法学习总结Swift高级语法学习总结Swift语法总结补充(一) 1. 可选类型是一种类型,String?就是Optional<String>,所以函数参数也可以声明为它2 ...

  3. CentOS6.6系统源代码安装mysql5.5.28教程(附源码包下载地址)+sysbench的安装

    mysql从5.5版本开始,不再使用./configure编译,而是使用cmake编译器,具体的cmake编译参数可以参考mysql官网文档(※ 非常重要) http://dev.mysql.com/ ...

  4. Monkey类、People类和主类 E。

    package jicheng; public class Monkey { private String s; public String getS() { return s; } public v ...

  5. (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法

    网络原因无法下载virtual device,status 为0表示服务器没有响应.FQ下载吧,有VPN的小伙伴推荐这种. 或者直接手动下载ova虚拟机文件,然后将虚拟机文件导入到virtualbox ...

  6. Using Pre-Form Trigger In Oracle Forms

    Pre-Form trigger in Oracle Forms fires during the form start-up, before forms navigates to the first ...

  7. D django 用户认证系统

    django认证系统包含三个部分:用户.权限和分组 安装 django项目默认启用了认证系统,如果不是使用django-admin.py创建项目的可以通过在settings配置文件里面的INSTALL ...

  8. ettercap

    作者: 官网:http://ettercap.github.io/ettercap/ 源码:https://github.com/Ettercap/ettercap 功能:arp欺骗

  9. [数据结构与算法]哈夫曼(Huffman)树与哈夫曼编码

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  10. [ZJOI2006]物流运输

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 5999  Solved: 2473[Submit][Stat ...