乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Json 和 Jsonlib 的使用

       feimishiwo 2014-05-12
      • 什么是 Json

      JSON(JvaScript Object Notation)(官網(wǎng)網(wǎng)站:http://www./)是 一種輕量級(jí)的數(shù)據(jù)交換格式。 易于人閱讀和編寫。同時(shí)也易于機(jī)器解析和生成。它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一個(gè)子集。 JSON 采用完全獨(dú)立于語(yǔ)言的文本格式,但是也使用了類似于 C 語(yǔ)言家族的習(xí)慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使 JSON 成為理想的數(shù)據(jù)交換語(yǔ)言。

      • JSON 的兩種結(jié)構(gòu)

      1.“名稱/值”對(duì)的集合(A collection of name/value pairs)。不同的語(yǔ)言中,它被理解為對(duì)象(object),紀(jì)錄(record),結(jié)構(gòu)(struct),字典(dictionary),哈希表 (hash table),有鍵列表(keyed list),或者關(guān)聯(lián)數(shù)組 (associative array)。 在 Java 語(yǔ)言中,我們可以將它理解成 HashMap。

      對(duì)象是一個(gè)無(wú)序的"'名稱/值'對(duì)"集合。一個(gè)對(duì)象以"{"(左括號(hào))開始,"}"(右括號(hào))結(jié)束。每個(gè)“名稱”后跟一個(gè)":"(冒號(hào));"'名稱/值' 對(duì)"之間使用","(逗號(hào))分隔。

      示例:var json = {"name":"Jack","age":90,"Marray":true};

      2. 值的有序列表(An ordered list of values)。在大部分語(yǔ)言中,它被理解為數(shù)組(Array 或 List)。

      數(shù)組是值(value)的有序集合。一個(gè)數(shù)組以"["(左中括號(hào))開始,"]"(右中括號(hào))結(jié)束。值之間使用","(逗號(hào))分隔。

      示例:var json = ["Jack","Rose","Tom",89,true,false];

      • Json-lib

      Json-lib 是一個(gè) Java 類庫(kù)(官網(wǎng):http://json-lib./)可以實(shí)現(xiàn)如下功能:

      • 轉(zhuǎn)換 javabeans, maps, collections, java arrays 和 XML 成為 json 格式數(shù)據(jù)
      • 轉(zhuǎn)換 json 格式數(shù)據(jù)成為 javabeans 對(duì)象

      Json-lib 需要的 jar 包

      • commons-beanutils-1.8.3.jar
      • commons-collections-3.2.1.jar
      • commons-lang-2.6.jar
      • commons-logging-1.1.1.jar
      • ezmorph-1.0.6.jar
      • json-lib-2.4-jdk15.jar

       

      • Json-lib 的使用

      1. 將 Array 解析成 Json 串。使用 JSONArray 可以解析 Array 類型:

      復(fù)制代碼
      package cn.sunzn.json;
      
      import java.util.ArrayList;
      import java.util.HashSet;
      import java.util.List;
      import java.util.Set;
      
      import net.sf.json.JSONArray;
      
      public class JsonLib {
         public static void main(String[] args) {
             /**
              * 將 Array 解析成 Json 串
              */
             String[] str = { "Jack", "Tom", "90", "true" };
             JSONArray json = JSONArray.fromObject(str);
             System.err.println(json);
      
             /**
              * 對(duì)像數(shù)組,注意數(shù)字和布而值
              */
             Object[] o = { "北京", "上海", 89, true, 90.87 };
             json = JSONArray.fromObject(o);
             System.err.println(json);
      
             /**
              * 使用集合類
              */
             List<String> list = new ArrayList<String>();
             list.add("Jack");
             list.add("Rose");
             json = JSONArray.fromObject(list);
             System.err.println(json);
      
             /**
              * 使用 set 集
              */
             Set<Object> set = new HashSet<Object>();
             set.add("Hello");
             set.add(true);
             set.add(99);
             json = JSONArray.fromObject(set);
             System.err.println(json);
         }
      }
      復(fù)制代碼

      運(yùn)行結(jié)果如下:

      ["Jack","Tom","90","true"]
      ["北京","上海",89,true,90.87]
      ["Jack","Rose"]
      [99,true,"Hello"]

      2. 將 JavaBean/Map 解析成 JSON 串。 使用JSONObject 解析:

      復(fù)制代碼
      package cn.sunzn.json;
      
      import java.util.HashMap;
      import java.util.Map;
      
      import net.sf.json.JSONObject;
      
      public class JsonLib {
         @SuppressWarnings("static-access")
         public static void main(String[] args) {
             /**
              * 解析 HashMap
              */
             Map<String, Object> map = new HashMap<String, Object>();
             map.put("name", "Tom");
             map.put("age", 33);
             JSONObject jsonObject = JSONObject.fromObject(map);
             System.out.println(jsonObject);
      
             /**
              * 解析 JavaBean
              */
             Person person = new Person("A001", "Jack");
             jsonObject = jsonObject.fromObject(person);
             System.out.println(jsonObject);
      
             /**
              * 解析嵌套的對(duì)象
              */
             map.put("person", person);
             jsonObject = jsonObject.fromObject(map);
             System.out.println(jsonObject);
         }
      }
      復(fù)制代碼

      運(yùn)行結(jié)果如下:

      {"age":33,"name":"Tom"}
      {"id":"A001","name":"Jack"}
      {"person":{"id":"A001","name":"Jack"},"age":33,"name":"Tom"}

      3. 使用 JsonConfig 過(guò)慮屬性:適用于 JavaBean/Map

      復(fù)制代碼
      package cn.sunzn.json;
      
      import net.sf.json.JSONObject;
      import net.sf.json.JsonConfig;
      
      public class JsonLib {
         public static void main(String[] args) {
             JsonConfig config = new JsonConfig();
             config.setExcludes(new String[] { "name" });                      // 指定在轉(zhuǎn)換時(shí)不包含哪些屬性
             Person person = new Person("A001", "Jack");
             JSONObject jsonObject = JSONObject.fromObject(person, config);    // 在轉(zhuǎn)換時(shí)傳入之前的配置對(duì)象
             System.out.println(jsonObject);
         }
      }
      復(fù)制代碼

      運(yùn)行結(jié)果如下,在運(yùn)行結(jié)果中我們可以看到 name 屬性被過(guò)濾掉了:

      {"id":"A001"}

      4. 將 Json 串轉(zhuǎn)換成 Array:

      復(fù)制代碼
      package cn.sunzn.json;
      
      import java.util.Arrays;
      import net.sf.json.JSONArray;
      
      public class JsonLib {
         public static void main(String[] args) {
             JSONArray jsonArray = JSONArray.fromObject("[89,90,99]");
             Object array = JSONArray.toArray(jsonArray);
             System.out.println(array);
             System.out.println(Arrays.asList((Object[]) array));
         }
      }
      復(fù)制代碼

      運(yùn)行結(jié)果如下:

      [Ljava.lang.Object;@1e5003f6
      [89, 90, 99]

      5. 將 Json 串轉(zhuǎn)成 JavaBean/Map:

      復(fù)制代碼
      package cn.sunzn.json;
      
      import java.util.Map;
      
      import net.sf.json.JSONObject;
      
      public class JsonLib {
         @SuppressWarnings("unchecked")
         public static void main(String[] args) {
             /**
              * 將 Json 形式的字符串轉(zhuǎn)換為 Map
              */
             String str = "{\"name\":\"Tom\",\"age\":90}";
             JSONObject jsonObject = JSONObject.fromObject(str);
             Map<String, Object> map = (Map<String, Object>) JSONObject.toBean(jsonObject, Map.class);
             System.out.println(map);
      
             /**
              * 將 Json 形式的字符串轉(zhuǎn)換為 JavaBean
              */
             str = "{\"id\":\"A001\",\"name\":\"Jack\"}";
             jsonObject = JSONObject.fromObject(str);
             System.out.println(jsonObject);
             Person person = (Person) JSONObject.toBean(jsonObject, Person.class);
             System.out.println(person);
         }
      }
      復(fù)制代碼

      運(yùn)行結(jié)果如下:

      {age=90, name=Tom}
      Person [id=A001, name=Jack]

      在將 Json 形式的字符串轉(zhuǎn)換為 JavaBean 的時(shí)候需要注意 JavaBean 中必須有無(wú)參構(gòu)造函數(shù),否則會(huì)報(bào)如下找不到初始化方法的錯(cuò)誤:

      復(fù)制代碼
      Exception in thread "main" net.sf.json.JSONException: java.lang.NoSuchMethodException: cn.sunzn.json.Person.<init>()
         at net.sf.json.JSONObject.toBean(JSONObject.java:288)
         at net.sf.json.JSONObject.toBean(JSONObject.java:233)
         at cn.sunzn.json.JsonLib.main(JsonLib.java:23)
      Caused by: java.lang.NoSuchMethodException: cn.sunzn.json.Person.<init>()
         at java.lang.Class.getConstructor0(Unknown Source)
         at java.lang.Class.getDeclaredConstructor(Unknown Source)
         at net.sf.json.util.NewBeanInstanceStrategy$DefaultNewBeanInstanceStrategy.newInstance(NewBeanInstanceStrategy.java:55)
         at net.sf.json.JSONObject.toBean(JSONObject.java:282)
         ... 2 more
      復(fù)制代碼

       

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多