• <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>

    java操作json數據之net.sf.json-lib

          JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據互換格局。它基于 ECMAScript (歐洲計較機協會擬定的js規范)的一個子集,采用完全自力于編程說話的文本格局來存儲和暗示數據。簡練和清楚的條理布局使得 JSON 當作為抱負的數據互換說話。 易于人閱讀和編寫,同時也易于機械解析和生當作,并有用地晉升收集傳輸效率。

    東西/原料

    • 電腦
    • intellij IDEA或者eclipse

    方式/步調

    1. 1

      第一步調:建立一個java項目。

      1、file--》new--》project...或者Model...打開建立窗口

      2、選擇建立的項目為spring initializr 進入springboot項目建立步調(也可以選擇類型java,建立一個通俗java web項目)

      3、輸入項目名字,選擇依靠web(若是不需要可以不選),選擇存放目次-完當作(Finish)

    2. 2

      第二步調:在pom.xml中添加net.sf.json-lib依靠

      如下所示:在pom.xml文件的dependencies標簽中添加

      <dependency>    

      <groupId>net.sf.json-lib</groupId>    

      <artifactId>json-lib</artifactId>    

      <version>2.4</version>    

      <classifier>jdk15</classifier>

      </dependency>

    3. 3

      第三步調:編寫代碼。

      1、編寫實體類:Student get和set方式本身生當作

      public class Student {    private int id;    private String name;    private String sex;

      }

      2、編寫測試代碼:

      2.1需要引入jar包

      import net.sf.json.JSONObject;

      2.2關頭代碼

      public static void testObject(){    

      Student st = new Student();    

      st.setId(1);    

      st.setName("張三");    

      st.setSex("男");    

      //轉為json對象    

      JSONObject json = JSONObject.fromObject(st);    

      System.out.println(json);    

      //轉為json字符串    

      System.out.println(json.toString())    

      //將json字符串轉為json對象    

      JSONObject jsonStr = JSONObject.fromObject(json.toString());    

      //獲得json數據    

      Object obj = JSONObject.toBean(jsonStr,Student.class);    

      Student st2 = (Student) obj;    System.out.println(st2.getSex());}

      3、測試代碼功能。

      3.1起首建立一個實體類,并給屬性復制,先實現將實體類轉為json對象,轉為json字符串的功能。

      3.2 再實現將一個json字符串轉為具體的實體類的功能。

      3.3 可以將利用map調集取代實體類實現同樣結果。

    4. 4

      第四步調:List調集的json操作。

      具體代碼如下所示:

      4.1 需要引入:

      import net.sf.json.JSONArraimport java.util.ArrayList;

      import java.util.List;

      4.2 關頭代碼:

      public static void testList(){    

      //將調集對象轉為json對象,json字符串    

      List<Student> list= new ArrayList<Student>();    

      Student st = new Student();    

      st.setId(1);    

      st.setName("張三");    

      st.setSex("男");    

      Student st2 = new Student();    

      st2.setId(2);    

      st2.setName("小麗");    

      st2.setSex("女");    

      list.add(st);   

      list.add(st2);    

      //將類轉為json對象    

      JSONArray array=JSONArray.fromObject(list);    

      System.out.println(array.toString());    

      //將json對象轉為對應的調集類    

      JSONArray arrayBean = JSONArray.fromObject(array.toString());    

      List<Student> listBean = (List<Student>) JSONArray.toCollection(arrayBean,Student.class);    

      //輸出轉換后的成果    

      for (Student lst: listBean) {        

      System.out.println("name:"+lst.getName());    

      }

      }

    5. 5

      第五步調:多層實體類處置。

      1、實體類:set和get方式本身生當作(set和get方式必需有)

      public class Person     private String id;    private Person pserson;

      }

      2、關頭測試代碼:實體類Person 屬性仍是Person 時json解析為實體類時一次搞心猿意馬。

      import net.sf.json.JSONObject;

      public static void main(String[] args) {    Person p1 = new Person();    p1.setId("111");    Person p2 = new Person();    p2.setId("222");    Person p3 = new Person();    p3.setId("333");    p1.setPserson(p2);    p2.setPserson(p3);    JSONObject jsonp = JSONObject.fromObject(p1);    System.out.println(jsonp);    Object objp = JSONObject.toBean(jsonp,Person.class);    Person p4 = (Person) objp;    Person p5 =  p4.getPserson();    Person p6 =  p5.getPserson();    System.out.println(p6.getId());}

      3、map屬性中存放map時比力麻煩需要利用MorphDynaBean 或者get一次解析一次。

      public static void main(String[] args) {    Map map1 = new HashMap();    Map map2 = new HashMap();    Map map3 = new HashMap();    map3.put("value","Male");    map2.put("gender",map3);    map1.put("attributes",map2);    JSONObject json = JSONObject.fromObject(map1);    System.out.println(json);    Object obj2 = JSONObject.toBean(json,Map.class);    Map map = (Map) obj2;    MorphDynaBean map4 = (MorphDynaBean) map.get("attributes");    MorphDynaBean map5 = (MorphDynaBean) map4.get("gender");    String male = (String) map5.get("value");    System.out.println(male);    //或者利用get一次解析一次    JSONObject json3 = JSONObject.fromObject(json.get("attributes"));    Map map6 = (Map) JSONObject.toBean(json3,Map.class);    JSONObject json4 = JSONObject.fromObject(json3.get("gender"));    Map map7 = (Map) JSONObject.toBean(json4,Map.class);    System.out.println(map7.get("value"));}

    6. 6

      第六步調:net.sf.json-lib常用常識點。

      5.1:net.sf.json.JSONObject常用方式:

      JSONObject json = JSONObject.fromObject(st);

      //按照key可以獲得一個Object對象,key可所以字符串和Object

      Object obj = json.get("key");

      //按照key可以獲得一個布爾值,key是一個字符串

      Boolean bo = json.getBoolean("key");

      還有一下這些,都是按照key返回具體的類型的數據。

      json.getString("key");json.getInt("key");

      json.getDouble("key");

      json.getJSONArray("key");

      json.getJSONArray("key");

      json.getLong("key");

      這些get開首的按照key獲取value的方式若是key不存在會報錯現實利用結果不是出格好。

      可以考慮opt開首的方式,當key不存在時返回默認值,或者自界說需要返回的內容。如下

      json.opt("key");json.optInt("key");

      json.optInt("key",0);

      json.optString("key");

      json.optString("key","");

    注重事項

    • 實體類的屬性必然要有對應的set和get方式不然,轉換時對應的屬性數據會丟掉。
    • 開辟情況jdk1.8 IDEA2018.2.2 maven apache-maven-3.5.4
    • 發表于 2019-04-19 22:31
    • 閱讀 ( 770 )
    • 分類:其他類型

    你可能感興趣的文章

    相關問題

    0 條評論

    請先 登錄 后評論
    聯系我們:uytrv@hotmail.com 問答工具
  • <noscript id="ecgc0"><kbd id="ecgc0"></kbd></noscript>
    <menu id="ecgc0"></menu>
  • <tt id="ecgc0"></tt>
    久久久久精品国产麻豆