JSON4J JavaTM 用法範例

核心物件 JSONObject 是 HashMap 的延伸。 這個物件有兩個用來處理 JSON 的功能。 第一個是靜態函數,它會剖析 JSON 字串,傳回代表特定字串的 JSONObject 實例。 第二個函數是配置一個新的 JSONObject 實例,然後利用 get、put 及 remove 方法來操作屬性,以建構全新的 JSON 字串。 JSONObject 的 PUT 函數會進行類型檢查,以確保 JSONObject 實例中的物件有對應的 JSON 表示法。 可以放在對映中,或透過 get 從其中提取的現行類型如下:

    java.lang.String
    java.lang.Boolean
    java.lang.Number
    com.ibm.json.java.JSONArray
    com.ibm.json.java.JSONObject
    null

之後,您就可以利用若干序列化方法之一,將任何建構的 JSONObject 實例序列化成為 JSON 字串。 當使用這些方法時,您可以指定一個輸出串流、一個輸出寫出器,或傳回 JSON 文字的 JavaTM 字串,以及指示要使用詳細(格式化且含有縮排,以便閱讀)或精簡(單行,傳輸效率好)格式。 請參閱下列用法範例:

用法範例:
展示 1:
public void demoJson()
{
   String JSON = "{\"attribute\":\"foo\", \"number\":100.959}";
      try
      {
         JSONObject obj = (JSONObject)JSON.parse(JSON);
         Double dbl = (Double)obj.get("number");
         if (dbl == null || dbl.doubleValue() != 100.959)
         {
            throw new Exception("Numeric value was incorrect");
         }

         String str = (String)obj.get("attribute");
         if (dbl == null || !str.equals("foo"))
         {
            throw new Exception("String attribute was incorrect");
         }
         String jsonStr = obj.serialize(true);
         System.out.println(jsonStr);
      }
      catch (Exception ex)
      {
         ex.printStackTrace();
      }
}

     上述範例的輸出如下:
   {
     "attribute": "foo",
     "number": 100.959
   }


展示 2:
public void demoJson()
{
   String JSON = "{\"attribute\":\"foo\", \"number\":100.959}";
      try
      {
         JSONObject obj = JSONObject.parse(JSON);
         Double dbl = (Double)obj.get("number");
         if (dbl == null || dbl.doubleValue() != 100.959)
         {
            throw new Exception("Numeric value was incorrect");
         }

         String str = (String)obj.get("attribute");
         if (dbl == null || !str.equals("foo"))
         {
            throw new Exception("String attribute was incorrect");
         }
         String jsonStr = obj.serialize(true);
         System.out.println(jsonStr);
      }
      catch (Exception ex)
      {
         ex.printStackTrace();
      }
}

     上述範例的輸出如下:
   {
     "attribute": "foo",
     "number": 100.959
   }


展示 3:
public void demoJson2()
{
   try
   {
      JSONObject obj = new JSONObject();
      obj.put("attribute", "foo");
      obj.put("number", new Double(100.959));
      String jsonStr = obj.serialize(true);
      System.out.println(jsonStr);
   }
   catch (Exception ex)
   {
      ex.printStackTrace();
   }
}

     上述範例的輸出如下:
   {
     "attribute": "foo",
     "number": 100.959
   }

請參閱特定 API 文件,以取得其他詳細資料。