一:以下是用到的jar名称:

commons-beanutils-1.6.jar

commons-collections-3.2.1.jar

commons-lang-2.6.jar

 commons-logging-1.1.1.jar

ezmorph-1.0.3.jar

 json-lib-2.2.3-jdk13.jar

json.jar

jar下载地址

  链接: https://pan.baidu.com/s/1c2Mkqli 密码: 6ems

二:练习的时候用到了内部类,所以里面有一点对内部类的使用方法。其余的就是json在java中日期转换和json和字符串之间的互转。

  用过之后感觉就和Map是差不多的

以下是练习源代码

 package com.tang;

 import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.commons.lang.time.DateFormatUtils; import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* json练习
* @author tbb
* @version 2017-4-8
*/
public class DemoJsons { /**
* json转换为字符串
*/
public static void doJsonToString(){
//jsonObject先转为json数组再去转换成字符串
JSONObject json = new JSONObject(); //向json中添加数据
json.put("username", "wangl"); //往json数组添加值 第一种方法
// JSONArray jsons = JSONArray.fromObject(json); //往json数组添加值 第二种方法
JSONArray jsons = new JSONArray();
jsons.add(json); //数组转换为String
System.out.println(jsons.toString());
//将数组中的jsonObjejct转换为String (可参考下面:getJsonArrayToString()方法)
System.out.println(jsons.getString(0)); //注如果非要转换成jsonObject类型的字符串
// String jsonToString1 = jsons.toString();
// String jsonToString2 = jsonToString1.substring(1, jsonToString1.length()-1);
// System.out.println(jsonToString2); } /**
* map转换为json对象
*/
static void doMapToJson(){
Map<String, Object> map = new HashMap<String, Object>();
map.put("username", "zhangsan");
map.put("password", "123456"); //转换为json数组
JSONArray array = JSONArray.fromObject(map);
System.out.println(array); //转换为json对象
JSONObject json = JSONObject.fromObject(map);
System.out.println(json);
} /**
* jsonObject中的一些方法应用
*/
public static void doJsonObjectHandle(){
//外部类调用内部类
DemoJsons.Person p = new DemoJsons().new Person();
p.setUserName("zhangsan");
p.setAge(19); //java对象转换成json对象
JSONObject json = JSONObject.fromObject(p); //判断是否包含某个值 包含:true 反之:false
// System.out.println(json.containsValue(19)); //判断是否包含某个key 包含:true 反之:false
// System.out.println(json.containsKey("userName")); //替换json对象中某个属性的值
// JSONObject json1 = json.element("userName", "lisi");
// System.out.println(json1); //根据key在value中增加值
// System.out.println(json.accumulate("age", 17)); //执行结果 : {"age":[19,17],"endTime":null,"userName":"zhangsan"} //和json.get("userName");返回值是相同点的
// System.out.println(json.opt("userName")); //往json中增加新的key和value
// json.put("shuai", "shuai"); //根据key 删除key-value
// json.remove("shuai");
System.out.println(json);
} /**
* java对象转换成json对象
*/
public static void doObject(){
/**
* 外部类调用内部类
* 1:如果内部类是public DemoJsons.Person p = new DemoJsons().new Person();
* 2:如果内部类是静态的 new DateJsonValueProcessor();
*/
//外部类调用内部类
DemoJsons.Person p = new DemoJsons().new Person();
p.setUserName("zhangsan");
p.setAge(19);
DemoJsons.Person p2 = new DemoJsons().new Person();
p2.setUserName("lisi");
p2.setAge(19);
DemoJsons.Person p3 = new DemoJsons().new Person();
p3.setUserName("wangwu");
p3.setAge(19);
List<Person> ps = new ArrayList<Person>();
ps.add(p);
ps.add(p2);
ps.add(p3); //java对象转换成json对象
JSONObject json = JSONObject.fromObject(p);
System.out.println(json); //java list转换成json数组
JSONArray jsons = JSONArray.fromObject(ps);
System.out.println(jsons); //获取json数组中的json对象
JSONObject obj = jsons.getJSONObject(2);
System.out.println(obj); //获取json对象中的属性值 相当与Map(key-value) 和map取值一样
System.out.println(obj.getString("userName"));
System.out.println(obj.getInt("age"));
} /**
* 日期转换
*/
public static void demoDate(){
//外部类调用内部类
Person p = new DemoJsons().new Person();
p.setAge(18);
p.setEndTime(new Date());
p.setUserName("zhangsan");
//日期转换
JsonConfig jsonConfig = new JsonConfig(); //第一种日期转换 需要新建一个类DateJsonValueProcessor
// jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor()); //第二种日期转换
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessor() { @Override
public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
// TODO Auto-generated method stub
//导包import org.apache.commons.lang.time.DateFormatUtils; jar包:commons-lang-2.6.jar
return DateFormatUtils.format((Date)arg1, "yyyy-MM-dd");
} @Override
public Object processArrayValue(Object arg0, JsonConfig arg1) {
// TODO Auto-generated method stub
return null;
}
}); JSONObject json = JSONObject.fromObject(p,jsonConfig);
System.out.println(json);
} /**
* 把json数组里的某个对象转换为字符串
*/
public static void getJsonArrayToString(){
String us = "[{\"userName\":\"zhangsan\"},{\"userName\":\"lisi\"}]";
JSONArray json = JSONArray.fromObject(us);
System.out.println(json.getString(0));
} /**
* 测试实体类
* @author tbb
*
*/
public class Person{ private String userName;
private Integer age;
private Date endTime; public Date getEndTime() {
return endTime;
}
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
} } /**
* 日期格式化处理类
* @author tbb
*
*/
public static class DateJsonValueProcessor implements JsonValueProcessor{
//json数组日期转换
@Override
public Object processArrayValue(Object arg0, JsonConfig arg1) {
// TODO Auto-generated method stub
//判断是否是Date类型
if (arg0 instanceof Date){
String str = DateFormatUtils.format((Date)arg0, "yyyy-MM-dd");
return str;
}
return null;
}
//json对象日期转换
@Override
public Object processObjectValue(String arg0, Object arg1,
JsonConfig arg2) {
// TODO Auto-generated method stub
return DateFormatUtils.format((Date)arg1, "yyyy-MM-dd");
} } /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// doObject();
// demoDate();
// doJsonToString();
// doJsonObjectHandle();
getJsonArrayToString();
} }

java中json和字符串互转及日期转换 练习的更多相关文章

  1. Java中JSON字符串与java对象的互换实例详解

    这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...

  2. (转)Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  3. Java中JSON字符串与java对象的互换实例详解(转)

    http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...

  4. java中 json和bean list map之间的互相转换总结

    JSON 与 对象 .集合 之间的转换 JSON字符串和java对象的互转[json-lib]   在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级 ...

  5. json对象字符串互转

    json对象字符串互转 1.Node.js中 JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json ...

  6. java中常用的字符串的截取方法

    java中常用的字符串的截取方法   1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...

  7. JAVA中用于处理字符串的“三兄弟”

    JAVA中用于处理字符串常用的有三个类:java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder,这三者的共同之处都是final类 ...

  8. Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  9. Java学习--Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

随机推荐

  1. H3 BPM总部乔迁 开启新篇章 筑梦新征程

    近日,国际一流的BPM解决方案服务商H3 BPM总部迎来乔迁之喜,办公新址泰邦科技大厦位于国家火炬计划软件产业基地.国家高新技术产业标准化示范区.国家文化和科技融合示范基地的深圳高新技术产业园区,办公 ...

  2. Django and Djangorestframework

    NOte Today, another day debuging with my teammates, and I just tried to make complete comprehension ...

  3. 一个很逗的东西——Jd

    这个嘛是本人专门为了NOI上面对拍程序写的对拍程序,已经经历了NOI2015的考验:更重要的是——纯Pascal的哦(HansBug:其实是我不会写.sh脚本TT,谁叫用惯了windows的我只会写b ...

  4. 初用Linux, 安装Ubuntu16.04+NVIDIA387+CUDA8.0+cudnn5.1+TensorFlow1.0.1

    因为最近Deep Learning十分热门, 装一下TensorFlow学习一下. 本文主要介绍安装流程, 将自己遇到的问题说明出来, 并记录自己如何处理, 原理方面并没有能力解释. 由于本人之前从来 ...

  5. 移植python笔记

    本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 编译环境:ubuntu-14.04.1 编译器:gcc.arm-hisiv200-linux-gnueabi P ...

  6. 开源的.NET定时任务组件Hangfire解析

    项目慢慢就要开工了,很多园友都在问这个事情,看来大伙对这事很上心啊,事情需要一步步的来,尽量写出一个我们都满意的项目.以前每次在博客前面都会扯淡一下,不过很多人都抱怨这样做不好,加上我这人扯淡起来就停 ...

  7. Linux shell-grep

    grep --help备忘录 Usage: grep [OPTION]... PATTERN [FILE]...Search for PATTERN in each FILE or standard ...

  8. Tcl与Design Compiler (三)——DC综合的流程

    本文属于原创手打(有参考文献),如果有错,欢迎留言更正:此外,转载请标明出处 http://www.cnblogs.com/IClearner/  ,作者:IC_learner 1.基本流程概述 首先 ...

  9. ABC: Always Be Coding

    ABC: Always Be Coding (原地址:https://medium.com/@davidbyttow/abc-always-be-coding-d5f8051afce2)   Be h ...

  10. Webstorm编译TypeScript报错

    Accessors are only available when targeting ECMAscript 5 and higher. 解决办法: File Watchers 在tsc.cmd命令上 ...