基本類型到JSON的轉化

一、 總結

JSON對象是一個無序的"名稱/值"對的集合它開始于“{”,結束于“}”。每一個屬性名和值間用“:”提示,屬性間用“,”分隔。一個數組開始于"[",結束于"]",值之間用","分隔。
數組和List轉換為JSON用JSONArray.fromObject Map、bean、beans(保存在一個List中轉換)轉換為JSON用 JSONObject.fromObject
JSONObject.toBean(JSONObject類型,Class類型) // 轉換為對象(如自定義類對象,Map對象等)

JSON (JavaScript Object Notation)是一種輕量級的數據交換格式,非常適合于服務器與 JavaScript 的交互. JSON 是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON 數據不需要任何特殊的 API 或工具包。Json必需的包(重新導入包后需重啟下,因為這個問題浪費了我好長時間 ,需注意)commons-beanutils.jar commons-lang-2.4.jarcommons-logging-1.1.1.jarjson-lib-2.2.3-jdk13.jarezmorph-1.0.6.jarcommons-collections-3.2.1.jar

<script language="javascript">  
  
 function showJSON() {     
     var user =      
     {      
         "username":"andy",     
         "age":20,     
         "info": { "tel": "123456", "cellphone": "98765"},     
         "address":     
             [     
                 {"city":"beijing","postcode":"222333"},     
                 {"city":"newyork","postcode":"555666"}     
             ]     
     }             
     alert(user.username);     
     alert(user.age);     
     alert(user.info.cellphone);   
     user.info["cellphone"]    
     alert(user.address[0].city);     
     alert(user.address[0].postcode);     
 }   
</script>  

這表示一個user對象,擁有username, age, info, address 等屬性。同樣也可以用JSON來簡單的修改數據,修改上面的例子js 代碼

function showJSON() {     
    var user =      
    {      
        "username":"andy",     
        "age":20,     
        "info": { "tel": "123456", "cellphone": "98765"},     
        "address":     
            [     
                {"city":"beijing","postcode":"222333"},     
                {"city":"newyork","postcode":"555666"}     
            ]     
    }             
    user.username = "Tom";     
    alert(user.username);     
}   

易錯地方 (注意有無外引號):

    function testJson(){  
           
         var str = { "name": "Violet", "password": "character" }; 
         alert(typeof(str));    
         alert(str.password);   
         alert(obj.toJSONString());      
          var a=50,b="xxx";  
          var arr="{id:"+a+",name:'"+b+"'}";
          var str2 = '{ "name": "Violet", "password": "character" }';       
          alert(typeof(str2)); 
          var obj = eval('(' + str2 + ')');
          alert(typeof(obj));   
          alert(obj.name);    
    }  
    </script>  

JSONObject resultJSON = new JSONObject();   
resultJSON.put("param1", 1);  
resultJSON.put("param2", 2);  
resultJSON.put("param3", 3);  
System.out.println(resultJSON);    
//{"param1":1,"param2":2,"param3":3}  

二、Java代碼轉換成json代碼
1.List集合轉換成json代碼

List list = new ArrayList();list.add( "first" );
list.add( "second" );
JSONArray jsonArray2 = JSONArray.fromObject( list );

2.Map集合轉換成json代碼

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);

3.Bean轉換成json代碼

JSONObject jsonObject = JSONObject.fromObject(new JsonBean());

//當是對象的時候 Student student = new Student(); student.setAge(18); student.setName("zhangsan"); student.setSex("male"); JSONObject jsonObject = JSONObject.fromObject(student); System.out.println(jsonObject);//輸出{"age":18,"name":"zhangsan","sex":"male"}
4.數組轉換成json代碼boolean[] boolArray = new boolean[] { true, false, true };JSONArray jsonArray1 = JSONArray.fromObject(boolArray);
**5.beans轉換成json代碼 **

 List  userInfosList = new ArrayList<UserInfo>();  
 UserInfo u1 = new UserInfo();   u1.setUserId(10000);    u1.setUserName("qqqqq");   u1.setPassword("111111");   
UserInfo u2 = new UserInfo();  
 u2.setUserId(10001);    
u2.setUserName("wwwww");   
 u2.setPassword("222222");   
userInfosList.add(u1);  
 userInfosList.add(u2);   
JSONArray json2=JSONArray.fromObject(userInfosList); Iterator it=**json**2.listIterator();       
 while(it.hasNext())   {
            JSONObject obj=(JSONObject)it.next();            
            UserInfo u=(UserInfo)JSONObject.toBean(obj,UserInfo.class);                   
            System.out.println(u.getPassword());       
 }

6、String轉JSON

String listStr = "['apple','orange']";        
JSONArray json = JSONArray.fromObject(listStr);  

三、JSON轉List、Map

JSON轉List

        String str = "['apple','orange']";  
        JSONArray **json** = JSONArray.fromObject(str);  
        Collection<String> list = JSONArray.toCollection(**json**);  
        for (String s : list) {  
               System.out.println(s);  
        }  

JOSN轉Map

        String mapStr = "{'age':30,'name':'Michael','baby':['Lucy','Lily']}";  
        JSONObject **json**3 = JSONObject.fromObject(mapStr);  
        Map<String, Object> map = (Map) JSONObject.toBean(**json**3, Map.class);  
        for (Map.Entry<String, Object> entry : map.entrySet()) {  
            System.out.println(entry.getKey() + " " + entry.getValue());  
        }  

四、遍歷JSON數據的兩種常用方式

var **json**={"status":1,"info":"u83b7u53d6u6210u529f","data":[{"id":"4","name":"u77f3u5bb6u5e84","information":"u5e02","Region_id":"3","type":"1"}]}  
var data=**json**.data;  
for(i=0;i<data.length;i++)  
{  
    document.write("Name:"+data[i].name+",Info:"+data[i].information+"");  
}  

var **json**=[{"kl_id":"2","kl_title":"Test date1","kl_content":"Test date2","kl_type":"3","id":"6"},{"kl_id":"2","kl_title":"Test1","kl_content":"Test2","kl_type":"1","id":"9"}]  
    var str = "";  
    for (var one in **json**)  
     {  
        for(var key in **json**[one])  
         {  
             str += **json**[one][key] + ",";  
         }  
     }  
     document.write(str);  
List list = query.list();  
List<String> excList = new ArrayList<String>();  
        if(list!=null && list.size()>0){  
            for (int i = 0; i < list.size(); i++) {  
                Object[] obj = (Object[]) list.get(i);  
                EipAnalysisServiceExc excR=new EipAnalysisServiceExc();  
                excR.setId(Long.parseLong(obj[0].toString()));  
                excR.setServiceName(obj[1]!=null?obj[1].toString():null);  
                  
                excList.add(JSONObject.fromObject(excR).toString());  
            }  
        }  
for (int i = 0; i < excList.size(); i++) {  
    JSONObject jSONObject = JSONObject.fromObject(excList.get(i));  
    EipAnalysisServiceExc exc = JSONObject.toBean(jSONObject, EipAnalysisServiceExc.class);  
        }  

由JSONObject.fromObject(excR)得到JSONObject對象,然后toString傳輸,再JSONObject.fromObject解析為JSONObject對象
使用JSONObject.toBean(JSONObject類型,Class類型) ,轉換為對象(如自定義類對象,Map對象等) 轉換為類類型

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,983評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,772評論 3 422
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,947評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,201評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,960評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,350評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,406評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,549評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,104評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,914評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,089評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,647評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,340評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,753評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,007評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,834評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,106評論 2 375

推薦閱讀更多精彩內容