java中json和字符串互转及日期转换 练习
一:以下是用到的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和字符串互转及日期转换 练习的更多相关文章
- Java中JSON字符串与java对象的互换实例详解
这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ...
- (转)Java中JSON字符串与java对象的互换实例详解
在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...
- Java中JSON字符串与java对象的互换实例详解(转)
http://www.jb51.net/article/90914.htm 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要 ...
- java中 json和bean list map之间的互相转换总结
JSON 与 对象 .集合 之间的转换 JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级 ...
- json对象字符串互转
json对象字符串互转 1.Node.js中 JSON.parse(jsonstr); //可以将json字符串转换成json对象 JSON.stringify(jsonobj); //可以将json ...
- java中常用的字符串的截取方法
java中常用的字符串的截取方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int l ...
- JAVA中用于处理字符串的“三兄弟”
JAVA中用于处理字符串常用的有三个类:java.lang.String.java.lang.StringBuffer.java.lang.StringBuilder,这三者的共同之处都是final类 ...
- Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- Java学习--Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
随机推荐
- db2 load乱码问题
在使用db2过程中经常需要从一个库里拿数据到自己库里来,通常需要将源表的数据导为数据文件,通过数据文件load到自己库里. 这个过程如果两个库的字符编码不一致,常规导入导出就会出现中文乱码. 以下是两 ...
- 每天一个Linux命令 8
yum 光盘yum源搭建好处:不需要上网,省去许多网络yum源下载所需的时间,安装速度会大大增加.缺点:yum源不一定是最新的 1.打开虚拟机,加载光盘镜像,进入Linux系统,挂载光盘.2. 让网络 ...
- Permanent Generation Removal Overview(译文)
英文原稿:http://vdisk.weibo.com/s/vxGdGZEZTEjk 中文整理稿:http://it.deepinmind.com/gc/2014/05/14/metaspace-in ...
- https单向认证和双向认证区别
关于证书 1.每个人都可以使用一些证书生成工具为自己的站点生成证书(比如jdk的keytool),大家称它为“自签名证书”,但是自己生成的证书是不被互联网承认的,所以浏览器会报安全提示,要求你手动安装 ...
- 【Python系列】Python自动发邮件脚本-html邮件内容
缘起 这段时间给朋友搞了个群发邮件的脚本,为了防止进入垃圾邮件,做了很多工作,刚搞完,垃圾邮件进入率50%,觉得还不错,如果要将垃圾邮件的进入率再调低,估计就要花钱买主机了,想想也就算了,先发一个月, ...
- pip --upgrade批量更新过期的python库
pip --upgrade批量更新过期的python库 python pip 转载请标明出处:marsggbo网易博客http://blog.163.com/hexin_mars_blog/blog/ ...
- Python快速入门(2)
var = raw_input() 获取用户输入,该函数会将获取的值转化为一个字符串,因此有时需要强制类型转换. if-elif-else: 三元操作符:condition1 if exp else ...
- jquery列队动画简单演示
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Javascript 闭包访问问题?
function pfajax(paradata){ $.ajax({ data : paradata.dat, type : paradata.method, async: false, url : ...
- web浏览器上传超大文件插件
如今基于浏览器安装插件的时代已经过时,让人觉得比较low,基于非插件的文件上传大都有限制,给大家推荐一款插件,基于大文件切割原理上传的插件,解决大家的难题! 项目链接http://www.twinkl ...