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. 使 ...
随机推荐
- 读书笔记 effective c++ Item 30 理解内联的里里外外 (大师入场啦)
最近北京房价蹭蹭猛涨,买了房子的人心花怒放,没买的人心惊肉跳,咬牙切齿,楼主作为北漂无房一族,着实又亚历山大了一把,这些天晚上睡觉总是很难入睡,即使入睡,也是浮梦连篇,即使亚历山大,对C++的热情和追 ...
- java 限定控制台输入值的类型
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public cl ...
- jenkins配置邮箱服务器(126邮箱)
安装Email Extension Plugin 安装过程容易失败,多试几次 一.开启126邮件的SMTP获取授权码 二.配置管理员邮件地址 三.设置邮件通知 四.点击Test Configura ...
- webpack 安装流程
我最近想看看wabpack,然后就面临着安装的问题,说实话,我一点也不懂cmd,怎么还需要用cmd安装呢.其实看教程上说可以在npm上安装,但是我打开npm总是出现闪退,所以我就选择了cmd 安装的过 ...
- nginx反向代理与负载均衡
一:nginx反向代理与负载均衡配置思路与用法 1.nginx反向代理:就是你去相亲时,媒婆就是这里的代理,让媒婆带你去见姑娘 2.nginx负载均衡:就是有很多的媒婆经过商量给你选出最适合你的姑娘, ...
- ICC_lab总结——ICC_lab3:布局
PS:字丑,禁止转载. 做到了ICC workshop的第三个实验,理论与实践相结合,于是,先放一张总结图,这张总结图来自前面的博客,放在这里用来体现理论和实践的联系: 这个就是布局的理论部分,在IC ...
- 【PHP实现】高效使用印象笔记之命令行快速保存
一.功能 脑袋中冒出一个想法时,命令行(Terminal)中输入一条命令快速保存到Evernote. 注:这里适用于保存简短的内容 不喜欢听絮叨的,直接文末找Github地址吧. 二.想法来源 一直使 ...
- UICollectionView 适配 iPhone 7 Plus
UICollectionView 适配 iPhone 7 Plus 需求:在屏幕上水平放置 5 张正方形图片,每张图片的宽度相等,无缝隙排列铺满一个屏幕宽度. 看似很简单的需求.用 UICollect ...
- Frame框架
框架 frameset 框架集 如果使用框架集,当前页面不能有body cols="300,*" :左右拆分,左边宽300,右边宽剩余 rows=" ...
- [.net 面向对象程序设计深入](8)认识.NET Core
[.net 面向对象程序设计深入](8)认识.NET Core 1,概述 .NET 经历14年,在Windows平台上的表现已经相当优秀,但是“跨平台.开源”却是其痛点,从16年开 ...