五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現在的位置: 365建站網 > 365文章 > java進行json解析數據或轉換成數組的方法

java進行json解析數據或轉換成數組的方法

文章來源:365jz.com     點擊數:798    更新時間:2018-05-31 20:07   參與評論
JSON數據解析的有點在于他的體積小,在網絡上傳輸的時候可以更省流量,所以使用越來越廣泛,下面介紹使用JsonObject和JsonArray的兩種方式解析Json數據。

使用以上兩種方式解析json均需要依賴json-lib.jar開發(fā)包使用依賴包

1、JsonObject

使用JsonObject解析只有一條數據的json是非常方便的例如:"{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"}"

public static void main(String[] args) { 
 
         String jsonString ="{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"}"; 
         JSONObject json = JSONObject.fromObject(jsonString); 
         User user = new User(); 
         user.setName(json.getString("name")); 
         user.setPassword(json.getString("password")); 
         user.setEmail(json.getString("email")); 
         System.out.println(user.toString()); 
    } 


2、JsonArray

使用JsonArray解析數組數據的json是非常方便的例如:"[{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"},{\"name\":\"lisi\",\"password\":\"lisi123\",\"email\":\"1435123@qq.com\"}]"

String json = <span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">"[{\"name\":\"zhangsan\",\"password\":\"zhangsan123\",\"email\":\"10371443@qq.com\"},</span><span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">{\"name\":\"lisi\",\"password\":\"lisi123\",\"email\":\"1435123@qq.com\"}</span><span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">]"</span>; 
         JSONArray jsonArray = JSONArray.fromObject(json); 
         ArrayList<User> users = new ArrayList<User>(); 
         for (int i = 0; i < jsonArray.size(); i++) { 
             User userM = new User(); 
             user.setName(jsonArray.getJSONObject(i).getString("name")); 
             user.setpassword(jsonArray.getJSONObject(i).getString("password")); 
             user.setEmail(jsonArray.getJSONObject(i).getString("email")); 
             users.add(user); 
        } 
         for (User user : users) { 
            System.out.println(user.toString()); 
        } 


通過以上兩種方式可以解析不同格式的json數據


這段時間我們在做一個英語翻譯軟件的小小小APP,涉及到了對Json數據的解析,所以特地來總結一下!

假設我們要對如下數據進行解析,其實在平時,返回的Json數據是很亂的,很難分清數據的關系,這是經過相關工具美化后的結果

{
  "translation": [
    "愛"
  ],
  "basic": {
    "us-phonetic": "l?v",
    "phonetic": "l?v",
    "uk-phonetic": "l?v",
    "explains": [
      "n. 戀愛;親愛的;酷愛;喜愛的事物",
      "vt. 喜歡;熱愛;愛慕",
      "vi. 愛",
      "n. (Love)人名;(英)洛夫"
    ]
  },
  "web": [
    {
      "value": [
        "愛情",
        "愛",
        "愛"
      ],
      "key": "Love"
    },
    {
      "value": [
        "無盡的愛",
        "藍色生死戀",
        "不了情"
      ],
      "key": "Endless Love"
    },
    {
      "value": [
        "早戀",
        "青春期戀愛",
        "初戀"
      ],
      "key": "puppy love"
    }
  ]
}

         我們把數據定義為一個字符串,加入轉義字符之后就成了這樣,有點亂是吧,所以我們根據上圖分析就好啦。

         Json數據說白了就是對象和數組的相互嵌套,那么我們開始吧!

   String st = "{\"translation\":[\"愛\"],\"basic\":{\"us-phonetic\":\"l?v\",\"phonetic\":\"l?v\",\"uk-phonetic\":\"l?v\",\"explains\":[\"n. 戀愛;親愛的;酷愛;喜愛的事物\",\"vt. 喜歡;熱愛;愛慕\",\"vi. 愛\",\"n. (Love)人名;(英)洛夫\"]},\"query\":\"love\",\"errorCode\":0,\"web\":[{\"value\":[\"愛情\",\"愛\",\"愛\"],\"key\":\"Love\"},{\"value\":[\"無盡的愛\",\"藍色生死戀\",\"不了情\"],\"key\":\"Endless Love\"},{\"value\":[\"早戀\",\"青春期戀愛\",\"初戀\"],\"key\":\"puppy love\"}]}";


        JSONObject str = JSONObject.fromObject(st);                 //json數據的最外層肯定是一個對象,參數為字符串
                                               //對象str又分為3部分:translation,basic,web  
        if(str.has("translation")){        
            JSONArray tr = str.getJSONArray("translation");               //translation是一個json數組
            for(int i = 0 ;i<tr.size();i++){                      //對數組元素進行遍歷
                System.out.println(tr.getString(i));              //因為元素的值是String類型的所以忽的值的方法是getString(index)
            }
        }

                                                                                                                                                               //basic中有數組也有元素
        if(str.has("basic")){                            
            JSONObject us = str.getJSONObject("basic");               //對元素進行解析,并輸出元素的值
            System.out.print("美:[" + us.getString("us-phonetic") + "]\t");    
           
            JSONObject uk = str.getJSONObject("basic");
            System.out.print("英:[" + us.getString("uk-phonetic") + "]\n");
           
            JSONObject basic = str.getJSONObject("basic");              //先獲得basic對象
            JSONArray explain = basic.getJSONArray("explains");            //再獲得basic對象下的explains數組 
            for(int i = 0;i<explain.size(); i++){                   //對數組元素進行遍歷
                System.out.println(explain.getString(i));
            }    
        }
        if(str.has("web")){                               //web是一個數組,每個數組元素又是三個Json對象
            System.out.println("拓展:");                      
            JSONArray web = str.getJSONArray("web");               
            for(int i = 0; i<web.size() ; i++ ){                   //但是對象中又嵌套著數組
                String t = web.getString(i);                   //遍歷過程將web數組元素賦給String型變量
                JSONObject we = JSONObject.fromObject(t);             //通過String又得到每個元素的對象
                if(we.has("key")){            
                    System.out.print(we.getString("key")+"\t");        //得到對象中的元素
                }
                if(we.has("value")){                      
                    JSONArray value = we.getJSONArray("value");
                    for(int x = 0 ; x<value.size() ;x++ ){          //遍歷對象中嵌套的數組
                        System.out.print(value.getString(x));       //得到數組元素的值
                        if(x<value.size()-1){
                            System.out.print(";");
                        }
                    }
                }
                System.out.println();
            }
        }


到這里就解析完啦!

java 字符串轉成 json 數組并且遍歷

當需要把一串字符串轉成一個json 數組 ,并遍歷其中的內容時。

首頁導入 net.sf.json.JSONArray和net.sf.json.JSONObject 兩個jar 包


String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ;  // 一個未轉化的字符串

JSONArray json = JSONArray.fromObject(str ); // 首先把字符串轉成 JSONArray  對象

if(json.size()>0){
  for(int i=0;i<json.size();i++){
    JSONObject job = json.getJSONObject(i);  // 遍歷 jsonarray 數組,把每一個對象轉成 json 對象
    System.out.println(job.get("name")+"=") ;  // 得到 每個對象中的屬性值
  }
}



java提取json中某個數組的所有值

public class JsonExtracter {

    public static void main(String[] args) {

        String s = "{\"name\":\"a\",\"family\":[\"張三\",\"李四\"]}";

        JSONObject jsonObject = JSON.parseObject(s);

        //注意:family中的內容帶有中括號[],所以要轉化為JSONArray類型的對象
        JSONArray family = jsonObject.getJSONArray("family");

        for (int i = 0; i < family.size(); i++) {
            //提取出family中的所有
            String s1 = (String) family.get(i);
            System.out.println("currentFamily:" + s1);

        }
    }



如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網友會為你解答??! 點擊進入論壇

發(fā)表評論 (798人查看,0條評論)
請自覺遵守互聯網相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網二維碼

Powered by 365建站網 RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號