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. 使 ...
随机推荐
- JAVA开发环境搭建 - Eclipse基本配置
Eclipse设置的内容包括许多方面,不同的开发人员,不同的项目需要,可能对Eclipse的设置不尽相同.如下内容仅是对本人的一些基本设置做一些记录,以作备忘.后期会逐渐对相关内容进行更新,仅供参考. ...
- CentOS 7安装配置FTP服务器
CentOS 7下FTP服务器的安装配置. 假设我们有以下要求 路径 权限 备注 /ftp/open 公司所有人员包括来宾均可以访问 只读 /ftp/private 仅允许Alice.Jack.Tom ...
- 用js写倒计时,向列表添加数据-------2017-03-21
一.单选按钮确定提交是否可用 <input id="a" type="radio" name="a" onclick="c ...
- ios 个推推送集成
个推推送总结: 个推第三方平台官网地址:http://www.getui.com/cn/index.html 首先去官网注册账号,创建应用,应用的配置信息,创建APNs推送证书上传 P12证书(开发对 ...
- Tomcat+Eclipse乱码问题解决方法
概述 乱码问题是大家在日常开发过程中经常会遇到的问题,由于各自环境的不同,解决起来也费时费力,本文主要介绍一般性乱码问题的解决方法与步骤,开发工具采用Eclipse+Tomcat,统一设置项目编码UT ...
- js正则表达式详解及示例讲解
所谓正则表达式,简单来说就是一种规则,一种计算机能读懂的规则.js中的正则表达式语法是Perl5(一种很早的编程语言)的正则语法的子集.本文将在基础知识的基础上添加示例帮助快速理解正则表达式. 学习正 ...
- Java 枚举详解
为什么要用枚举 在博客系统中,一篇文章有且可能有这几种状态, 数据库中article文章表中state字段存储数值,表示其状态: 0(已发表Published) 1(草稿Draft) 2(撤回撤回(D ...
- maven修改远程和本地仓库地址
简介:我们用maven的时候,maven自带的远程中央仓库经常会很慢,还有默认本地仓库是在c盘C:\Users\你的电脑用户账号\.m2\repository, 对于有强迫症的人,总是看的不爽,下面介 ...
- formvalidation表单验证
官方文档:http://formvalidation.io var $formEntityProfileSearch = $("form[name=entityProfileSearch]& ...
- PRINCE2学习
今天对PRINCE2中提及的7大主题进行学习,主要的内容是通过概述和PMBOK之间的对比做一些总结,每个主题所包含的过程和方法并没有太多涉及,没有对整个体系有全面深入的学习,有些断章取义的地方也请博友 ...