java和json互转
在网页中想后台传递多个数据时,有时数据还是多个动态列表,数据很复杂时,JavaScript程序员喜欢把他们作为json串进行处理,后台收到后需要对json字符串进行解析,幸好有JSON-lib,这个Java类包用于把bean,map和XML转换成JSON并能够把JSON转回成bean和DynaBean。
下载地址:http://json-lib.sourceforge.net/
  1 public class Test {
  2
  3 /**
  4
  5 * @param args
  6
  7 * @author wen
  8
  9 */
 10
 11 public static void main(String[] args) {
 12
 13 //            test1();
 14
 15 //            test2();
 16
 17 String json = “{1:{1:{jhinfo:['计划一','亲亲宝宝','www.wenhq.com'],jhrate:['1-5:10.0','6-100:5.0/1']},2:{jhinfo:['计划二','亲亲宝宝','www.wenhq.com'],jhrate:['1-100:100.0']},3:{jhinfo:['计划三','亲亲宝宝','www.wenhq.com'],jhrate:['1-100:150.0/7']}},2:{4:{jhinfo:['年计划','亲亲宝宝','www.wenhq.com'],jhrate:['365-365:1000.0']}}}”;
 18
 19 try {
 20
 21 JSONObject jsonObject = JSONObject.fromObject(json);
 22
 23 String name = jsonObject.getString(“1″);
 24
 25 String address = jsonObject.getString(“2″);
 26
 27 System.out.println(“name is:” + name);
 28
 29 System.out.println(“address is:” + address);
 30
 31 Iterator it=jsonObject.keys();
 32
 33 while (it.hasNext()){
 34
 35 System.out.println(jsonObject.get(it.next()));
 36
 37 }
 38
 39 } catch (JSONException e) {
 40
 41 e.printStackTrace();
 42
 43 }
 44
 45 }
 46
 47 /**
 48
 49 * json对象字符串转换
 50
 51 * @author wen
 52
 53 */
 54
 55 private static void test2() {
 56
 57 String json = “{‘name’: ‘亲亲宝宝’,'array’:[{'a':'111','b':'222','c':'333'},{},{'a':'999'}],’address’:'亲亲宝宝’}”;
 58
 59 try {
 60
 61 JSONObject jsonObject = JSONObject.fromObject(json);
 62
 63 String name = jsonObject.getString(“name”);
 64
 65 String address = jsonObject.getString(“address”);
 66
 67 System.out.println(“name is:” + name);
 68
 69 System.out.println(“address is:” + address);
 70
 71 JSONArray jsonArray = jsonObject.getJSONArray(“array”);
 72
 73 for (int i = 0; i < jsonArray.size(); i++) {
 74
 75 System.out.println(“item ” + i + ” :” + jsonArray.getString(i));
 76
 77 }
 78
 79 } catch (JSONException e) {
 80
 81 e.printStackTrace();
 82
 83 }
 84
 85 }
 86
 87 /**
 88
 89 * json数组 转换,数组以[开头
 90
 91 * @author wen
 92
 93 */
 94
 95 private static void test1() {
 96
 97 boolean[] boolArray = new boolean[]{true,false,true};
 98
 99 JSONArray jsonArray1 = JSONArray.fromObject( boolArray );
100
101 System.out.println( jsonArray1 );
102
103 // prints [true,false,true]
104
105 List list = new ArrayList();
106
107 list.add( “first” );
108
109 list.add( “second” );
110
111 JSONArray jsonArray2 = JSONArray.fromObject( list );
112
113 System.out.println( jsonArray2 );
114
115 // prints ["first","second"]
116
117 JSONArray jsonArray3 = JSONArray.fromObject( “['json','is','easy']” );
118
119 System.out.println( jsonArray3 );
120
121 // prints ["json","is","easy"]
122
123 }
从json数组中得到相应java数组,如果要获取java数组中的元素,只需要遍历该数组。
1 /**
2 * 从json数组中得到相应java数组
3 * JSONArray下的toArray()方法的使用
4 * @param str
5 * @return
6 */
7 public static Object[] getJsonToArray(String str) {
8 JSONArray jsonArray = JSONArray.fromObject(str);
9 return jsonArray.toArray();
10 }
11
12 public static void main(String[] args) {
13 JSONArray jsonStrs = new JSONArray();
14 jsonStrs.add(0, "cat");
15 jsonStrs.add(1, "dog");
16 jsonStrs.add(2, "bird");
17 jsonStrs.add(3, "duck");
18
19 Object[] obj=getJsonToArray(jsonStrs.toString());
20 for(int i=0;i<obj.length;i++){
21 System.out.println(obj[i]);
22 }
23 }
从json数组中得到java数组,可以对该数组进行转化,如将JSONArray转化为String型、Long型、Double型、Integer型、Date型等等。 
分别采用jsonArray下的getString(index)、getLong(index)、getDouble(index)、getInt(index)等方法。 
同样,如果要获取java数组中的元素,只需要遍历该数组。
1 /**
2 * 将json数组转化为Long型
3 * @param str
4 * @return
5 */
6 public static Long[] getJsonToLongArray(String str) {
7 JSONArray jsonArray = JSONArray.fromObject(str);
8 Long[] arr=new Long[jsonArray.size()];
9 for(int i=0;i<jsonArray.size();i++){
10 arr[i]=jsonArray.getLong(i);
11 System.out.println(arr[i]);
12 }
13 return arr;
14 }
15 /**
16 * 将json数组转化为String型
17 * @param str
18 * @return
19 */
20 public static String[] getJsonToStringArray(String str) {
21 JSONArray jsonArray = JSONArray.fromObject(str);
22 String[] arr=new String[jsonArray.size()];
23 for(int i=0;i<jsonArray.size();i++){
24 arr[i]=jsonArray.getString(i);
25 System.out.println(arr[i]);
26 }
27 return arr;
28 }
29 /**
30 * 将json数组转化为Double型
31 * @param str
32 * @return
33 */
34 public static Double[] getJsonToDoubleArray(String str) {
35 JSONArray jsonArray = JSONArray.fromObject(str);
36 Double[] arr=new Double[jsonArray.size()];
37 for(int i=0;i<jsonArray.size();i++){
38 arr[i]=jsonArray.getDouble(i);
39 }
40 return arr;
41 }
42 /**
43 * 将json数组转化为Date型
44 * @param str
45 * @return
46 */
47 public static Date[] getJsonToDateArray(String jsonString) {
48
49 JSONArray jsonArray = JSONArray.fromObject(jsonString);
50 Date[] dateArray = new Date[jsonArray.size()];
51 String dateString;
52 Date date;
53 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
54 for (int i = 0; i < jsonArray.size(); i++) {
55 dateString = jsonArray.getString(i);
56 try {
57 date=sdf.parse(dateString);
58 dateArray[i] = date;
59 } catch (Exception e) {
60 e.printStackTrace();
61 }
62 }
63 return dateArray;
64 }
65
66
67 public static void main(String[] args) {
68
69 JSONArray jsonLongs = new JSONArray();
70 jsonLongs.add(0, "111");
71 jsonLongs.add(1, "222.25");
72 jsonLongs.add(2, new Long(333));
73 jsonLongs.add(3, 444);
74
75 Long[] log=getJsonToLongArray(jsonLongs.toString());
76 for(int i=0;i<log.length;i++){
77 System.out.println(log[i]);
78 }
79
80 JSONArray jsonStrs = new JSONArray();
81 jsonStrs.add(0, "2011-01-01");
82 jsonStrs.add(1, "2011-01-03");
83 jsonStrs.add(2, "2011-01-04 11:11:11");
84
85 Date[] d=getJsonToDateArray(jsonStrs.toString());
86 for(int i=0;i<d.length;i++){
87 System.out.println(d[i]);
88 }
89 }
90 /*结果如下:
91 * 111
92 * 222
93 * 333
94 * 444
95 *
96 * Sat Jan 01 00:00:00 CST 2011
97 * Mon Jan 03 00:00:00 CST 2011
98 * Tue Jan 04 00:00:00 CST 2011
99 */
/**
 * java转为json对象
 * @author wudouzhu
 */
public class JsonTest3 {
public static void main(String[] args) {
		SimInfo s = new SimInfo();
		s.setAddTime("2000-10-21");
		s.setIccid("23");
		s.setId("243432435435365789");
		s.setImei("423");
		s.setImsi("545");
		s.setPhoneType("1878789887");
		s.setRemark("1");
		s.setTel("0518-666678");
		String json = new JSONArray().fromObject(s).toString();
		System.out.println("json:"+json);
		//json:[{"addTime":"2000-10-21","iccid":"23","id":"243432435435365789","imei":"423","imsi":"545","phoneType":"1878789887","remark":"1","tel":"0518-666678"}]
}
}
/**
 * json转为java对象
 * @author wudouzhu
 */
public class JsonTest {
public static void main(String[] args) {
		String json="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
		if(json.indexOf("[")!=-1){
			json = json.replace("[","");
		}
		if(json.indexOf("]")!=-1){
			json = json.replace("]","");
		}
		JSONObject object = JSONObject.fromObject(json);
		SimInfo simInfo = (SimInfo)JSONObject.toBean(object,SimInfo.class);
		System.out.println("obj:"+object);
		System.out.println(simInfo.getAddTime());
		System.out.println(simInfo.getIccid());
		System.out.println(simInfo.getId());
		System.out.println(simInfo.getImei());
		System.out.println(simInfo.getImsi());
		System.out.println(simInfo.getPhoneType());
		System.out.println(simInfo.getRemark());
		System.out.println(simInfo.getTel());
	}
}
/**
 * json转为java集合对象
 * @author wudouzhu
 */
public class JsonTest2 {
public static void main(String[] args) {
		JsonTest2  t = new JsonTest2();
		String jsons="[{\"addTime\":\"2011-09-19 14:23:02\",\"iccid\":\"1111\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}," +
                	 "{\"addTime\":\"2011-11-11 14:23:02\",\"iccid\":\"2222\",\"id\":0,\"imei\":\"2222\",\"imsi\":\"3333\",\"phoneType\":\"4444\",\"remark\":\"aaaa\",\"tel\":\"5555\"}]";
		List<SimInfo> simInfos = t.getJavaCollection(new SimInfo(),jsons);
		System.out.println("size:"+simInfos.size());
		for(SimInfo s:simInfos){
			System.out.println("addTime:"+s.getAddTime());
			System.out.println("==========");
		}
	}
	/*
	 * 封装将json对象转为java集合对象
	 */
	private <T> List<T> getJavaCollection(T clazz,String jsons){
		List<T> objs = null;
		JSONArray jsonArray = (JSONArray)JSONSerializer.toJSON(jsons);
		if(jsonArray!=null){
			objs = new ArrayList<T>();
			List list = (List)JSONSerializer.toJava(jsonArray);
			for(Object o:list){
				JSONObject jsonObject = JSONObject.fromObject(o);
				T obj = (T)JSONObject.toBean(jsonObject,clazz.getClass());
				objs.add(obj);
			}
		}
return objs;
	}
}
java和json互转的更多相关文章
- JSON — Java与JSON数据互转
		转换时Bean所要求的: 被转换的Bean必需是public的. Bean被转换的属性一定要有对应的get方法,且一定要是public的. Bean中不能用引用自身的this的属性,否则运行时出现et ... 
- JSON字符串和java对象的互转【json-lib】
		在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ... 
- JSONUtil(JAVA对象/List与json互转,xml与json互转)
		package com.chauvet.utils.json; import java.io.BufferedReader; import java.io.File; import java.io.F ... 
- java json数据转List对象的集合-----阿里巴巴插件---及原生json---JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
		List<RunfastFullLess> list=(List<RunfastFullLess>)JSONArray.parseObject(activity.getFull ... 
- 转载--------      JSON 与 对象 、集合 之间的转换 JSON字符串和java对象的互转【json-lib】
		转载--*--*---- 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,J ... 
- JAVA和.NET互调用
		通过接口实现JAVA和.NET互调用-JNInterface 使用C#编程多年,也十分感激微软在语言架构.语法糖.编辑器等方面给自己带来的便利.但因为最近工作中有接触到JAVA,渐渐地发现的确像大家说 ... 
- Json-lib   进行java与json字符串转换之一
		这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下. 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.J ... 
- Java中JSON字符串与java对象的互换实例详解
		这篇文章主要介绍了在java中,JSON字符串与java对象的相互转换实例详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JS ... 
- java中  json和bean list map之间的互相转换总结
		JSON 与 对象 .集合 之间的转换 JSON字符串和java对象的互转[json-lib] 在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级 ... 
随机推荐
- oracle数据库死锁的查看及解决
			Oracle常见死锁发生的原因以及解决方法 www.MyException.Cn 网友分享于:2014-09-02 浏览:0次 Oracle常见死锁发生的原因以及解决办法 一,删除和更 ... 
- Dynamics CRM 2011 权限管理
			CRM系统基于角色的权限主要通过部门.角色.用户.团队来进行控制.每一个实体记录的所有者(Owner)必然是某一个用户或团队.一个用户或团队必然归属于一个且只归属于一个部门,但团队的成员即用户可以来自 ... 
- C++中的STL中map用法详解(转)
			原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解 Map是STL的一个关联容器,它提供 ... 
- jquery文件的引入
			上节课说到,一般情况下,是库的文件,该库中都会抛出来构造函数或者对象 ,如果是构造函数,那么创建对象,如果是对象直接调用属性和方法 使用jquery第一步,先引入jquery,然后再写相应的jquer ... 
- 史上最全的Angular.js 的学习资源
			Angular.js 的一些学习资源 基础 官方: http://docs.angularjs.org angularjs官方网站已被墙,可看 http://www.ngnice.com/: 官方zi ... 
- 基于git的管理应用程序基线包和版本
			由于工作的需要,身为git的小白的我开始研究git相关的命令和操作.结合网上收集和廖雪峰的git教程,记录所学知识点. 相关的效果就不再这里显示了. 首先我们看一下git的常用命令: 常用命令 git ... 
- 关于RDS for mysql中导入数据库set global event_scheduler =1 需要更多超级权限
			关于RDS中导入数据库set global event_scheduler =1 需要更多超级权限 报错提示 其实这个意思是 让mysql自动启动 计划任务 如果在 命令行下 查询 SHOW VAR ... 
- Linux下安装MATLAB
			Why do I see "Preparing installation files ... Installing ... Finished..." in the terminal ... 
- PHP截取中文不乱吗
			function utf_substr($str, $len) { for ($i = 0; $i < $len; $i++) { $temp_str = substr($str, 0, 1); ... 
- 智能指针--C++
			智能指针(一):STL auto_ptr实现原理 智能指针实际上是一个类(class),里面封装了一个指针.它的用处是啥呢? 指针与内存 说到指针自然涉及到内存.我们如果是在堆栈(stack)中分配了 ... 
