JSON.simple - คู่มือฉบับย่อ

JSON.simpleเป็นชุดเครื่องมือที่ใช้ Java อย่างง่ายสำหรับ JSON คุณสามารถใช้ JSON.simple เพื่อเข้ารหัสหรือถอดรหัสข้อมูล JSON

คุณสมบัติ

  • Specification Compliant - JSON.simple เป็นไปตามข้อกำหนด JSON อย่างสมบูรณ์ - RFC4627

  • Lightweight - มีคลาสน้อยมากและมีฟังก์ชันที่จำเป็นเช่นเข้ารหัส / ถอดรหัสและหนี json

  • Reuses Collections - การดำเนินการส่วนใหญ่ทำโดยใช้อินเตอร์เฟสแผนที่ / รายการเพื่อเพิ่มความสามารถในการใช้งานซ้ำ

  • Streaming supported - รองรับการสตรีมข้อความเอาต์พุต JSON

  • SAX like Content Handler - ให้อินเทอร์เฟซคล้าย SAX เพื่อสตรีมข้อมูล JSON จำนวนมาก

  • High performance - ใช้ตัวแยกวิเคราะห์แบบฮีปและให้ประสิทธิภาพสูง

  • No dependency- ไม่มีการพึ่งพาไลบรารีภายนอก สามารถรวมได้อย่างอิสระ

  • JDK1.2 compatible - ซอร์สโค้ดและไบนารีเข้ากันได้กับ JDK1.2

การตั้งค่าสภาพแวดล้อมท้องถิ่น

JSON.simple เป็นไลบรารีสำหรับ Java ดังนั้นข้อกำหนดแรกสุดคือต้องติดตั้ง JDK ในเครื่องของคุณ

ความต้องการของระบบ

JDK หน่วยความจำ พื้นที่ดิสก์ ระบบปฏิบัติการ
1.5 ขึ้นไป ไม่มีข้อกำหนดขั้นต่ำ ไม่มีข้อกำหนดขั้นต่ำ ไม่มีข้อกำหนดขั้นต่ำ

ขั้นตอนที่ 1: ตรวจสอบการติดตั้ง Java ในเครื่องของคุณ

ก่อนอื่นให้เปิดคอนโซลและดำเนินการคำสั่ง java ตามระบบปฏิบัติการที่คุณกำลังทำงานอยู่

ระบบปฏิบัติการ งาน คำสั่ง
Windows เปิด Command Console c: \> java - เวอร์ชัน
ลินุกซ์ เปิด Command Terminal $ java - รุ่น
Mac เปิด Terminal เครื่อง: <joseph $ java -version

มาตรวจสอบผลลัพธ์สำหรับระบบปฏิบัติการทั้งหมด -

ระบบปฏิบัติการ เอาต์พุต
Windows

เวอร์ชัน java "1.8.0_101"

สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.8.0_101)

ลินุกซ์

เวอร์ชัน java "1.8.0_101"

สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.8.0_101)

Mac

เวอร์ชัน java "1.8.0_101"

สภาพแวดล้อมรันไทม์ Java (TM) SE (สร้าง 1.8.0_101)

หากคุณไม่ได้มี Java ติดตั้งในระบบของคุณแล้วดาวน์โหลด Java Software Development Kit (SDK) จากลิงค์ต่อไปwww.oracle.com เราถือว่า Java 1.8.0_101 เป็นเวอร์ชันที่ติดตั้งสำหรับบทช่วยสอนนี้

ขั้นตอนที่ 2: ตั้งค่าสภาพแวดล้อม JAVA

ตั้งค่า JAVA_HOMEตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่ติดตั้ง Java บนเครื่องของคุณ ตัวอย่างเช่น.

ระบบปฏิบัติการ เอาต์พุต
Windows ตั้งค่าตัวแปรสภาพแวดล้อม JAVA_HOME เป็น C: \ Program Files \ Java \ jdk1.8.0_101
ลินุกซ์ ส่งออก JAVA_HOME = / usr / local / java-current
Mac ส่งออก JAVA_HOME = / Library / Java / Home

ผนวกตำแหน่งคอมไพเลอร์ Java เข้ากับ System Path

ระบบปฏิบัติการ เอาต์พุต
Windows ต่อท้ายสตริง C:\Program Files\Java\jdk1.8.0_101\bin ในตอนท้ายของตัวแปรระบบ Path.
ลินุกซ์ ส่งออก PATH = $ PATH: $ JAVA_HOME / bin /
Mac ไม่จำเป็นต้องใช้

ตรวจสอบการติดตั้ง Java โดยใช้คำสั่ง java -version ตามที่อธิบายไว้ข้างต้น

ขั้นตอนที่ 3: ดาวน์โหลด JSON.simple Archive

ดาวน์โหลดเวอร์ชันล่าสุดของไฟล์ขวด JSON.simple จากJSON ง่าย @ MVNRepository ในขณะที่เขียนบทช่วยสอนนี้เราได้ดาวน์โหลด json-simple-1.1.1.jar และคัดลอกลงในโฟลเดอร์ C: \> JSON

ระบบปฏิบัติการ ชื่อที่เก็บถาวร
Windows json-simple-1.1.1.jar
ลินุกซ์ json-simple-1.1.1.jar
Mac json-simple-1.1.1.jar

ขั้นตอนที่ 4: ตั้งค่าสภาพแวดล้อม JSON_JAVA

ตั้งค่า JSON_JAVAตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่งไดเร็กทอรีฐานที่เก็บ JSON.simple jar ไว้ในเครื่องของคุณ สมมติว่าเราเก็บ json-simple-1.1.1.jar ไว้ในโฟลเดอร์ JSON

ซีเนียร์ No ระบบปฏิบัติการและคำอธิบาย
1

Windows

ตั้งค่าตัวแปรสภาพแวดล้อม JSON_JAVA เป็น C: \ JSON

2

Linux

ส่งออก JSON_JAVA = / usr / local / JSON

3

Mac

ส่งออก JSON_JAVA = / Library / JSON

ขั้นตอนที่ 5: ตั้งค่าตัวแปร CLASSPATH

ตั้งค่า CLASSPATH ตัวแปรสภาพแวดล้อมเพื่อชี้ไปยังตำแหน่ง JSON.simple jar

ซีเนียร์ No ระบบปฏิบัติการและคำอธิบาย
1

Windows

ตั้งค่าตัวแปรสภาพแวดล้อม CLASSPATH เป็น% CLASSPATH%;% JSON_JAVA% \ json-simple-1.1.1.jar; .;

2

Linux

ส่งออก CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-simple-1.1.1.jar:.

3

Mac

ส่งออก CLASSPATH = $ CLASSPATH: $ JSON_JAVA / json-simple-1.1.1.jar:.

JSON แผนที่เอนทิตีแบบง่ายจากด้านซ้ายไปทางด้านขวาในขณะที่ถอดรหัสหรือแยกวิเคราะห์และแมปเอนทิตีจากด้านขวาไปด้านซ้ายขณะเข้ารหัส

JSON Java
สตริง java.lang.String
จำนวน java.lang.Number
จริง | เท็จ java.lang.Boolean
โมฆะ โมฆะ
อาร์เรย์ java.util.List
วัตถุ java.util.Map

เมื่อวันที่ถอดรหัสชั้นคอนกรีตเริ่มต้นของjava.util.Listเป็นorg.json.simple.JSONArrayและชั้นคอนกรีตเริ่มต้นของjava.util.Mapเป็นorg.json.simple.JSONObject

อักขระต่อไปนี้เป็นอักขระที่สงวนไว้และไม่สามารถใช้ใน JSON ได้และต้องใช้ Escape อย่างถูกต้องเพื่อใช้ในสตริง

  • Backspace ที่จะแทนที่ด้วย \ b

  • Form feed ที่จะแทนที่ด้วย \ f

  • Newline ที่จะแทนที่ด้วย \ n

  • Carriage return จะถูกแทนที่ด้วย \ r

  • Tab ที่จะแทนที่ด้วย \ t

  • Double quote ที่จะแทนที่ด้วย \ "

  • Backslash จะถูกแทนที่ด้วย \\

JSONObject.escape()สามารถใช้วิธีการหลีกเลี่ยงคำหลักที่สงวนไว้ดังกล่าวในสตริง JSON ต่อไปนี้เป็นตัวอย่าง -

ตัวอย่าง

import org.json.simple.JSONObject;

public class JsonDemo {
   public static void main(String[] args) {
      JSONObject jsonObject = new JSONObject();
      String text = "Text with special character /\"\'\b\f\t\r\n.";
      System.out.println(text);
      System.out.println("After escaping.");
      text = jsonObject.escape(text);
      System.out.println(text);
   }
}

เอาต์พุต

Text with special character /"'
.
After escaping.
Text with special character \/\"'\b\f\t\r\n.

JSONValue จัดเตรียมวิธีการแยกวิเคราะห์แบบคงที่ () เพื่อแยกวิเคราะห์สตริง json ที่กำหนดเพื่อส่งคืน JSONObject ซึ่งสามารถใช้เพื่อรับค่าที่แยกวิเคราะห์ได้ ดูตัวอย่างด้านล่าง

ตัวอย่าง

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

public class JsonDemo {
   public static void main(String[] args) {
      String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
      Object obj = JSONValue.parse(s);
      JSONArray array = (JSONArray)obj;

      System.out.println("The 2nd element of array");
      System.out.println(array.get(1));
      System.out.println();

      JSONObject obj2 = (JSONObject)array.get(1);
      System.out.println("Field \"1\"");
      System.out.println(obj2.get("1"));    

      s = "{}";
      obj = JSONValue.parse(s);
      System.out.println(obj);

      s = "[5,]";
      obj = JSONValue.parse(s);
      System.out.println(obj);

      s = "[5,,2]";
      obj = JSONValue.parse(s);
      System.out.println(obj);
   }
}

เอาต์พุต

The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}

Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]

JSONParser.parse () พ่น ParseException ในกรณีที่ JSON ไม่ถูกต้อง ตัวอย่างต่อไปนี้แสดงวิธีจัดการ ParseException

ตัวอย่าง

import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

class JsonDemo {
   public static void main(String[] args) {
      JSONParser parser = new JSONParser();
      String text = "[[null, 123.45, \"a\tb c\"]}, true";

      try{
         Object obj = parser.parse(text);         
         System.out.println(obj);
      }catch(ParseException pe) {
         System.out.println("position: " + pe.getPosition());
         System.out.println(pe);
      }
   }
}

เอาต์พุต

position: 24
Unexpected token RIGHT BRACE(}) at position 24.

ContainerFactory สามารถใช้เพื่อสร้างคอนเทนเนอร์แบบกำหนดเองสำหรับอ็อบเจ็กต์ / อาร์เรย์ JSON ที่แยกวิเคราะห์ ก่อนอื่นเราต้องสร้างอ็อบเจ็กต์ ContainerFactory จากนั้นใช้ในการแยกวิเคราะห์วิธีของ JSONParser เพื่อรับอ็อบเจ็กต์ที่ต้องการ ดูตัวอย่างด้านล่าง -

ตัวอย่าง

import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.json.simple.parser.ContainerFactory;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

class JsonDemo {
   public static void main(String[] args) {
      JSONParser parser = new JSONParser();
      String text =  "{\"first\": 123, \"second\": [4, 5, 6], \"third\": 789}";
      ContainerFactory containerFactory = new ContainerFactory() {
         @Override
         public Map createObjectContainer() {
            return new LinkedHashMap<>();
         }
         @Override
         public List creatArrayContainer() {
            return new LinkedList<>();
         }
      };
      try {
         Map map = (Map)parser.parse(text, containerFactory);       
         map.forEach((k,v)->System.out.println("Key : " + k + " Value : " + v));
      } catch(ParseException pe) {
         System.out.println("position: " + pe.getPosition());
         System.out.println(pe);
      }
   }
}

เอาต์พุต

Key : first Value : 123
Key : second Value : [4, 5, 6]
Key : third Value : 789

อินเทอร์เฟซ ContentHandler ใช้เพื่อจัดเตรียม SAX like interface เพื่อสตรีม json ขนาดใหญ่ ให้ความสามารถที่หยุดได้เช่นกัน ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิด

ตัวอย่าง

import java.io.IOException;
import java.util.List;
import java.util.Stack;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.ContentHandler;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

class JsonDemo {
   public static void main(String[] args) {
      JSONParser parser = new JSONParser();
      String text =  "{\"first\": 123, \"second\": [4, 5, 6], \"third\": 789}";
      try {
         CustomContentHandler handler = new CustomContentHandler();
         parser.parse(text, handler,true);       
      } catch(ParseException pe) {
      }
   }
}
class CustomContentHandler implements ContentHandler {
   @Override
   public boolean endArray() throws ParseException, IOException {     
      System.out.println("inside endArray");
      return true;
   }
   @Override
   public void endJSON() throws ParseException, IOException {
      System.out.println("inside endJSON");
   }
   @Override
   public boolean endObject() throws ParseException, IOException {       
      System.out.println("inside endObject");
      return true;
   }
   @Override
   public boolean endObjectEntry() throws ParseException, IOException {
      System.out.println("inside endObjectEntry");
      return true;
   }
   public boolean primitive(Object value) throws ParseException, IOException {
      System.out.println("inside primitive: " + value);
      return true;
   }
   @Override
   public boolean startArray() throws ParseException, IOException {
      System.out.println("inside startArray");
      return true;
   }
   @Override
   public void startJSON() throws ParseException, IOException {
      System.out.println("inside startJSON");
   }
   @Override
   public boolean startObject() throws ParseException, IOException {
      System.out.println("inside startObject");      
      return true;
   }
   @Override
   public boolean startObjectEntry(String key) throws ParseException, IOException {
      System.out.println("inside startObjectEntry: " + key); 
      return true;
   }    
}

เอาต์พุต

inside startJSON
inside startObject
inside startObjectEntry: first
inside primitive: 123
inside endObjectEntry
inside startObjectEntry: second
inside startArray
inside primitive: 4
inside primitive: 5
inside primitive: 6
inside endArray
inside endObjectEntry
inside startObjectEntry: third
inside primitive: 789
inside endObjectEntry
inside endObject
inside endJSON

ใช้ JSON อย่างง่ายเราสามารถเข้ารหัส JSON Object โดยใช้วิธีต่อไปนี้ -

  • Encode a JSON Object - to String - การเข้ารหัสอย่างง่าย

  • Encode a JSON Object - Streaming - สามารถใช้เอาต์พุตสำหรับการสตรีมได้

  • Encode a JSON Object - Using Map - การเข้ารหัสโดยการรักษาการสั่งซื้อ

  • Encode a JSON Object - Using Map and Streaming - การเข้ารหัสโดยการรักษาการสั่งซื้อและเพื่อสตรีม

ตัวอย่างต่อไปนี้แสดงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import java.io.StringWriter;
import java.util.LinkedHashMap;
import java.util.Map;

import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONObject obj = new JSONObject();
      String jsonText;

      obj.put("name", "foo");
      obj.put("num", new Integer(100));
      obj.put("balance", new Double(1000.21));
      obj.put("is_vip", new Boolean(true));
      jsonText = obj.toString();

      System.out.println("Encode a JSON Object - to String");
      System.out.print(jsonText);

      StringWriter out = new StringWriter();
      obj.writeJSONString(out);       
      jsonText = out.toString();

      System.out.println("\nEncode a JSON Object - Streaming");       
      System.out.print(jsonText);

      Map obj1 = new LinkedHashMap();
      obj1.put("name", "foo");
      obj1.put("num", new Integer(100));
      obj1.put("balance", new Double(1000.21));
      obj1.put("is_vip", new Boolean(true));

      jsonText = JSONValue.toJSONString(obj1); 
      System.out.println("\nEncode a JSON Object - Preserving Order");
      System.out.print(jsonText);

      out = new StringWriter();
      JSONValue.writeJSONString(obj1, out); 
      jsonText = out.toString();
      System.out.println("\nEncode a JSON Object - Preserving Order and Stream");
      System.out.print(jsonText);
   }
}

เอาต์พุต

Encode a JSON Object - to String
{"balance":1000.21,"is_vip":true,"num":100,"name":"foo"}
Encode a JSON Object - Streaming
{"balance":1000.21,"is_vip":true,"num":100,"name":"foo"}
Encode a JSON Object - Preserving Order
{"name":"foo","num":100,"balance":1000.21,"is_vip":true}
Encode a JSON Object - Preserving Order and Stream
{"name":"foo","num":100,"balance":1000.21,"is_vip":true}

ใช้ JSON อย่างง่ายเราสามารถเข้ารหัส JSON Array โดยใช้วิธีต่อไปนี้ -

  • Encode a JSON Array - to String - การเข้ารหัสอย่างง่าย

  • Encode a JSON Array - Streaming - สามารถใช้เอาต์พุตสำหรับการสตรีมได้

  • Encode a JSON Array - Using List - การเข้ารหัสโดยใช้รายการ

  • Encode a JSON Array - Using List and Streaming - การเข้ารหัสโดยใช้รายการและเพื่อสตรีม

ตัวอย่างต่อไปนี้แสดงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import java.io.StringWriter;
import java.util.LinkedList;
import java.util.List;

import org.json.simple.JSONArray;
import org.json.simple.JSONValue;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONArray list = new JSONArray();
      String jsonText;

      list.add("foo");
      list.add(new Integer(100));
      list.add(new Double(1000.21));
      list.add(new Boolean(true));
      list.add(null);
      jsonText = list.toString();

      System.out.println("Encode a JSON Array - to String");
      System.out.print(jsonText);

      StringWriter out = new StringWriter();
      list.writeJSONString(out);       
      jsonText = out.toString();

      System.out.println("\nEncode a JSON Array - Streaming");       
      System.out.print(jsonText);

      List list1 = new LinkedList();
      list1.add("foo");
      list1.add(new Integer(100));
      list1.add(new Double(1000.21));
      list1.add(new Boolean(true));
      list1.add(null);

      jsonText = JSONValue.toJSONString(list1); 
      System.out.println("\nEncode a JSON Array - Using List");
      System.out.print(jsonText);

      out = new StringWriter();
      JSONValue.writeJSONString(list1, out); 
      jsonText = out.toString();
      System.out.println("\nEncode a JSON Array - Using List and Stream");
      System.out.print(jsonText);
   }
}

เอาต์พุต

Encode a JSON Array - to String
["foo",100,1000.21,true,null]
Encode a JSON Array - Streaming
["foo",100,1000.21,true,null]
Encode a JSON Array - Using List
["foo",100,1000.21,true,null]
Encode a JSON Array - Using List and Stream
["foo",100,1000.21,true,null]

ใน JSON.simple เราสามารถผสานสอง JSON Objects ได้อย่างง่ายดายโดยใช้เมธอด JSONObject.putAll ()

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import org.json.simple.JSONObject;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONObject obj1 = new JSONObject();       
      obj1.put("name", "foo");
      obj1.put("num", new Integer(100)); 

      JSONObject obj2 = new JSONObject();       
      obj2.put("balance", new Double(1000.21));
      obj2.put("is_vip", new Boolean(true));       
      obj1.putAll(obj2);       
      System.out.println(obj1);
   }
}

เอาต์พุต

{"balance":1000.21,"is_vip":true,"num":100,"name":"foo"}

ใน JSON อย่างง่ายเราสามารถผสานสองอาร์เรย์ JSON ได้อย่างง่ายดายโดยใช้เมธอด JSONArray.addAll ()

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import org.json.simple.JSONArray;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONArray list1 = new JSONArray();
      list1.add("foo");
      list1.add(new Integer(100));

      JSONArray list2 = new JSONArray();       
      list2.add(new Double(1000.21));
      list2.add(new Boolean(true));
      list2.add(null);

      list1.addAll(list2);       
      System.out.println(list1);       
   }
}

เอาต์พุต

["foo",100,1000.21,true,null]

การใช้ออบเจ็กต์ JSONArray เราสามารถสร้าง JSON ซึ่งประกอบด้วยไพรมารีอ็อบเจกต์และอาร์เรย์

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONArray list1 = new JSONArray();
      list1.add("foo");
      list1.add(new Integer(100));

      JSONArray list2 = new JSONArray();       
      list2.add(new Double(1000.21));
      list2.add(new Boolean(true));
      list2.add(null);

      JSONObject obj = new JSONObject();

      obj.put("name", "foo");
      obj.put("num", new Integer(100));
      obj.put("balance", new Double(1000.21));
      obj.put("is_vip", new Boolean(true));
     
      obj.put("list1", list1); 
      obj.put("list2", list2);
      System.out.println(obj);       
   }
}

เอาต์พุต

{"list1":["foo",100],"balance":1000.21,"is_vip":true,"num":100,"list2":[1000.21,true,null],"name":"foo"}

ด้วยการใช้ออบเจ็กต์ JSONValue เราสามารถสร้าง JSON ซึ่งประกอบด้วยดั้งเดิมแผนที่และรายการ

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.json.simple.JSONValue;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      Map m1 = new LinkedHashMap(); 
      m1.put("k11","v11"); 
      m1.put("k12","v12"); 
      m1.put("k13", "v13");

      List l1 = new LinkedList();
      l1.add(m1);
      l1.add(new Integer(100));

      String jsonString = JSONValue.toJSONString(l1);
      System.out.println(jsonString);
   }
}

เอาต์พุต

[{"k11":"v11","k12":"v12","k13":"v13"},100]

การใช้ออบเจ็กต์ JSONValue เราสามารถสร้าง JSON ซึ่งประกอบไปด้วย primitives, Object, Map และ List

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONObject obj = new JSONObject();

      Map m1 = new LinkedHashMap(); 
      m1.put("k11","v11");
      m1.put("k12","v12");
      m1.put("k13", "v13");

      List l1 = new LinkedList();      
      l1.add(new Integer(100));

      obj.put("m1", m1);
      obj.put("l1", l1);
      String jsonString = JSONValue.toJSONString(obj);
      System.out.println(jsonString);
   }
}

เอาต์พุต

{"m1":{"k11":"v11","k12":"v12","k13":"v13"},"l1":[100]}

เราสามารถปรับแต่งเอาต์พุต JSON ตามคลาสที่กำหนดเองได้ ข้อกำหนดเพียงอย่างเดียวคือการติดตั้งส่วนต่อประสาน JSONAware

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;

import org.json.simple.JSONArray;
import org.json.simple.JSONAware;
import org.json.simple.JSONObject;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONArray students = new JSONArray(); 
      students.add(new Student(1,"Robert")); 
      students.add(new Student(2,"Julia")); 

      System.out.println(students);     
   }
}
class Student implements JSONAware {
   int rollNo;
   String name;
   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }
   @Override
   public String toJSONString() {
      StringBuilder sb = new StringBuilder();
      sb.append("{");
      sb.append("name");
      sb.append(":");
      sb.append("\"" + JSONObject.escape(name) + "\"");
      sb.append(",");
      sb.append("rollNo");
      sb.append(":");
      sb.append(rollNo);
      sb.append("}");
      return sb.toString();
   }    
}

เอาต์พุต

[{name:"Robert",rollNo:1},{name:"Julia",rollNo:2}]

เราสามารถปรับแต่งเอาต์พุตการสตรีม JSON ตามคลาสที่กำหนดเองได้ ข้อกำหนดเพียงอย่างเดียวคือการใช้อินเทอร์เฟซ JSONStreamAware

ตัวอย่างต่อไปนี้แสดงให้เห็นถึงแนวคิดข้างต้น

ตัวอย่าง

import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
import java.util.LinkedHashMap;
import java.util.Map;

import org.json.simple.JSONArray;
import org.json.simple.JSONStreamAware;
import org.json.simple.JSONValue;

class JsonDemo {
   public static void main(String[] args) throws IOException {
      JSONArray students = new JSONArray(); 
      students.add(new Student(1,"Robert")); 
      students.add(new Student(2,"Julia")); 
      StringWriter out = new StringWriter();
      students.writeJSONString(out); 
      System.out.println(out.toString());     
   }
}
class Student implements JSONStreamAware {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }
   @Override
   public void writeJSONString(Writer out) throws IOException {
      Map obj = new LinkedHashMap();
      obj.put("name", name);
      obj.put("rollNo", new Integer(rollNo));
      JSONValue.writeJSONString(obj, out);        
   }    
}

เอาต์พุต

[{name:"Robert",rollNo:1},{name:"Julia",rollNo:2}]