日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

使用json-lib进行Java和JSON之间的转换

發布時間:2023/12/10 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用json-lib进行Java和JSON之间的转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自http://www.cnblogs.com/mailingfeng/archive/2012/01/18/2325707.html

1. json-lib是一個java類庫,提供將Java對象,包括beans, maps, collections, java arrays and XML等轉換成JSON,或者反向轉換的功能。

?

2. json-lib 主頁 :?http://json-lib.sourceforge.net/

?

3.執行環境

???? 需要以下類庫支持

  • jakarta commons-lang 2.5
  • jakarta commons-beanutils 1.8.0
  • jakarta commons-collections 3.2.1
  • jakarta commons-logging 1.1.1
  • ezmorph 1.0.6

4.功能示例

?? 這里通過JUnit-Case例子給出代碼示例

??

package?com.mai.json;

import?static?org.junit.Assert.assertEquals;

import?java.util.ArrayList;
import?java.util.Date;
import?java.util.HashMap;
import?java.util.Iterator;
import?java.util.List;
import?java.util.Map;
import?net.sf.ezmorph.Morpher;
import?net.sf.ezmorph.MorpherRegistry;
import?net.sf.ezmorph.bean.BeanMorpher;
import?net.sf.json.JSONArray;
import?net.sf.json.JSONObject;
import?net.sf.json.util.JSONUtils;

import?org.apache.commons.beanutils.PropertyUtils;
import?org.junit.Test;

public?class?JsonLibTest?{

????/*
?????*??普通類型、List、Collection等都是用JSONArray解析
?????*??
?????*??Map、自定義類型是用JSONObject解析
?????*??可以將Map理解成一個對象,里面的key/value對可以理解成對象的屬性/屬性值
?????*??即{key1:value1,key2,value2......}
?????*?
?????*?1.JSONObject是一個name:values集合,通過它的get(key)方法取得的是key后對應的value部分(字符串)
?????*?????????通過它的getJSONObject(key)可以取到一個JSONObject,-->?轉換成map,
?????*?????????通過它的getJSONArray(key)?可以取到一個JSONArray?,
?????*?
?????*?
?????*/
????
????//一般數組轉換成JSON
????@Test
????public?void?testArrayToJSON(){
????????boolean[]?boolArray?=?new?boolean[]{true,false,true};??
????????JSONArray?jsonArray?=?JSONArray.fromObject(?boolArray?);??
????????System.out.println(?jsonArray?);??
????????//?prints?[true,false,true]??
????}
????
????
????//Collection對象轉換成JSON
????@Test
????public?void?testListToJSON(){
????????List?list?=?new?ArrayList();??
????????list.add(?"first"?);??
????????list.add(?"second"?);??
????????JSONArray?jsonArray?=?JSONArray.fromObject(?list?);??
????????System.out.println(?jsonArray?);??
????????//?prints?["first","second"]??
????}
????
????
????//字符串json轉換成json,?根據情況是用JSONArray或JSONObject
????@Test
????public?void?testJsonStrToJSON(){
????????JSONArray?jsonArray?=?JSONArray.fromObject(?"['json','is','easy']"?);??
????????System.out.println(?jsonArray?);??
????????//?prints?["json","is","easy"]??
????}
????
????
????//Map轉換成json,?是用jsonObject
????@Test
????public?void?testMapToJSON(){
????????Map?map?=?new?HashMap();??
????????map.put(?"name",?"json"?);??
????????map.put(?"bool",?Boolean.TRUE?);??
????????map.put(?"int",?new?Integer(1)?);??
????????map.put(?"arr",?new?String[]{"a","b"}?);??
????????map.put(?"func",?"function(i){?return?this.arr[i];?}"?);??
??????????
????????JSONObject?jsonObject?=?JSONObject.fromObject(?map?);??
????????System.out.println(?jsonObject?);??
????}
????
????//復合類型bean轉成成json
????@Test
????public?void?testBeadToJSON(){
????????MyBean?bean?=?new?MyBean();
????????bean.setId("001");
????????bean.setName("銀行卡");
????????bean.setDate(new?Date());
????????
????????List?cardNum?=?new?ArrayList();
????????cardNum.add("農行");
????????cardNum.add("工行");
????????cardNum.add("建行");
????????cardNum.add(new?Person("test"));
????????
????????bean.setCardNum(cardNum);
????????
????????JSONObject?jsonObject?=?JSONObject.fromObject(bean);
????????System.out.println(jsonObject);
????????
????}
????
????//普通類型的json轉換成對象
????@Test
????public?void?testJSONToObject()?throws?Exception{
????????String?json?=?"{name=\"json\",bool:true,int:1,double:2.2,func:function(a){?return?a;?},array:[1,2]}";??
????????JSONObject?jsonObject?=?JSONObject.fromObject(?json?);?
????????System.out.println(jsonObject);
????????Object?bean?=?JSONObject.toBean(?jsonObject?);?
????????assertEquals(?jsonObject.get(?"name"?),?PropertyUtils.getProperty(?bean,?"name"?)?);??
????????assertEquals(?jsonObject.get(?"bool"?),?PropertyUtils.getProperty(?bean,?"bool"?)?);??
????????assertEquals(?jsonObject.get(?"int"?),?PropertyUtils.getProperty(?bean,?"int"?)?);??
????????assertEquals(?jsonObject.get(?"double"?),?PropertyUtils.getProperty(?bean,?"double"?)?);??
????????assertEquals(?jsonObject.get(?"func"?),?PropertyUtils.getProperty(?bean,?"func"?)?);??
????????System.out.println(PropertyUtils.getProperty(bean,?"name"));
????????System.out.println(PropertyUtils.getProperty(bean,?"bool"));
????????System.out.println(PropertyUtils.getProperty(bean,?"int"));
????????System.out.println(PropertyUtils.getProperty(bean,?"double"));
????????System.out.println(PropertyUtils.getProperty(bean,?"func"));
????????System.out.println(PropertyUtils.getProperty(bean,?"array"));
????????
????????List?arrayList?=?(List)JSONArray.toCollection(jsonObject.getJSONArray("array"));
????????for(Object?object?:?arrayList){
????????????System.out.println(object);
????????}
????????
????}
????
????
????//將json解析成復合類型對象,?包含List
????@Test
????public?void?testJSONToBeanHavaList(){
????????String?json?=?"{list:[{name:'test1'},{name:'test2'}],map:{test1:{name:'test1'},test2:{name:'test2'}}}";
//????????String?json?=?"{list:[{name:'test1'},{name:'test2'}]}";
????????Map?classMap?=?new?HashMap();
????????classMap.put("list",?Person.class);
????????MyBeanWithPerson?diyBean?=?(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class?,?classMap);
????????System.out.println(diyBean);
????????
????????List?list?=?diyBean.getList();
????????for(Object?o?:?list){
????????????if(o?instanceof?Person){
????????????????Person?p?=?(Person)o;
????????????????System.out.println(p.getName());
????????????}
????????}
????}
????
????
????//將json解析成復合類型對象,?包含Map
????@Test
????public?void?testJSONToBeanHavaMap(){
????????//把Map看成一個對象
????????String?json?=?"{list:[{name:'test1'},{name:'test2'}],map:{testOne:{name:'test1'},testTwo:{name:'test2'}}}";
????????Map?classMap?=?new?HashMap();
????????classMap.put("list",?Person.class);
????????classMap.put("map",?Map.class);
????????//使用暗示,直接將json解析為指定自定義對象,其中List完全解析,Map沒有完全解析
????????MyBeanWithPerson?diyBean?=?(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json),MyBeanWithPerson.class?,?classMap);
????????System.out.println(diyBean);
????????
????????System.out.println("do?the?list?release");
????????List<Person>?list?=?diyBean.getList();
????????for(Person?o?:?list){
????????????Person?p?=?(Person)o;
????????????System.out.println(p.getName());
????????}
????????
????????System.out.println("do?the?map?release");
????????
????????//先往注冊器中注冊變換器,需要用到ezmorph包中的類
????????MorpherRegistry?morpherRegistry?=?JSONUtils.getMorpherRegistry();
????????Morpher?dynaMorpher?=?new?BeanMorpher(?Person.class,??morpherRegistry);??
????????morpherRegistry.registerMorpher(?dynaMorpher?);??
????????
????????
????????Map?map?=?diyBean.getMap();
????????/*這里的map沒進行類型暗示,故按默認的,里面存的為net.sf.ezmorph.bean.MorphDynaBean類型的對象*/
????????System.out.println(map); /*輸出: {testOne=net.sf.ezmorph.bean.MorphDynaBean@f73c1[
        ? {name=test1}
        ], testTwo=net.sf.ezmorph.bean.MorphDynaBean@186c6b2[
?         {name=test2}
        ]} */
????????List<Person>?output?=?new?ArrayList();??
????????for(?Iterator?i?=?map.values().iterator();?i.hasNext();?){??
????????????//使用注冊器對指定DynaBean進行對象變換
???????????output.add(?(Person)morpherRegistry.morph(?Person.class,?i.next()?)?);??
????????}??
????????
????????for(Person?p?:?output){
????????????System.out.println(p.getName()); /*輸出: test1
          test2 */
????????}
????????
????}
????
????
????
}

?

5.下面提供上面例子所需的資源,包括jar包和代碼

/Files/mailingfeng/json-lib/json-lib用例所需jar包和java類.rar?

轉載于:https://www.cnblogs.com/varorbc/p/4101799.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的使用json-lib进行Java和JSON之间的转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。