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. 命令行下运行php的方法和技巧

    linux中直接用"php"命令来执行php文件 一般在linux命令行下运行php文件的代码: XML/HTML代码 linux下执行:#php安装路径 -f php文件路径 例 ...

  2. percona-toolkit工具包的使用教程之开发类工具

    percona-toolkit工具包的使用教程之开发类工具 1.  pt-duplicate-key-checker l  功能介绍: 功能为从mysql表中找出重复的索引和外键,这个工具会将重复的索 ...

  3. 【leetcode❤python】70. Climbing Stairs

    #Method1:动态规划##当有n个台阶时,可供选择的走法可以分两类:###1,先跨一阶再跨完剩下n-1阶:###2,先跨2阶再跨完剩下n-2阶.###所以n阶的不同走法的数目是n-1阶和n-2阶的 ...

  4. CodeForces 445B DZY Loves Chemistry

    DZY Loves Chemistry Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64 ...

  5. HDU 4870 Rating 概率DP

    Rating Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  6. 关于mysqli_fetch_assoc的一点说明

    关于mysqli_fetch_assoc的一点说明     如下2种用法是错误的: 错误1 .... $fetchResult = mysqli_fetch_assoc($queryResult); ...

  7. V-rep学习笔记:转动关节1

    V-REP(Virtual Robot Experimentation Platform),是全球领先的机器人及模拟自动化软件平台.V-REP让使用者可以模拟整个机器人系统或其子系统(如感测器或机械结 ...

  8. Highlighting Text Item On Entry In Oracle Forms

    Highlight a Text Item in Oracle Forms With Visual Attribute It is very necessary to highlight the cu ...

  9. Fiddler界面详解

    Statistics 页签 完整页签如下图: Statistics 页签显示当前用户选择的 Sessions 的汇总信息,包括:选择的 Sessions 总数.发送字节数.接收字节数.响应类型的汇总表 ...

  10. python_way day12 RabbitMQ ,pymysql

    python_way day12 1.RabbitMQ 2.pymysql RabbitMQ 1.基本用法 """ producer """ ...