มีเครื่องมือมากมายที่ใช้ในการแปลงสตริง JSON เป็นวัตถุ Java
การคัดลอกรหัสมีดังนี้:
นำเข้า java.util.arraylist;
นำเข้า java.util.hashmap;
นำเข้า java.util.list;
นำเข้า java.util.map;
นำเข้า com.jfinal.kit.jsonkit;
ชั้นเรียนสาธารณะ JSontojavaObject {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
Object O1 = Parse ("{/" AA/": 123, CC: [1,2,3,4, {CD: F, BB: 234}]}");
System.out.println (jsonkit.tojson (O1));
-
การแยกวัตถุแบบคงที่สาธารณะ (String JSON) {
if (json == null) {
คืนค่า null;
-
json = json.trim ();
if ("String" .equals (typeof (json))) {
กลับ JSON;
-
ถ้า ("แผนที่" .Equals (typeof (json))) {
กลับ Parsemap (JSON);
-
if ("list" .equals (typeof (json))) {
กลับ Parselist (JSON);
-
คืนค่า null;
-
แผนที่สาธารณะคงที่ parsemap (String JSON) {
ถ้า (! "แผนที่" .Equals (typeof (json))) {
โยน runtimeException ใหม่ ("JSON ไม่ใช่ประเภทแผนที่");
-
แผนที่ r = new hashmap ();
parsetoken (r, json, null);
Return R;
-
รายการคงที่สาธารณะ parselist (String json) {
if (! "list" .equals (typeof (json))) {
โยน runtimeException ใหม่ ("JSON ไม่ใช่ประเภทรายการ");
-
รายการ r = new ArrayList ();
parsetoken (null, json, r);
Return R;
-
String String สาธารณะประเภท (String JSON) {
if (json.length () == 0) ส่งคืน "สตริง";
if ('{' == json.charat (0)) {
if ('}' == json.charat (json.length ()-1)) {
กลับ "แผนที่";
-
-
if ('[' == json.charat (0)) {
if (']' == json.charat (json.length ()-1)) {
กลับ "รายการ";
-
-
กลับ "สตริง";
-
parsetoken void private static (แผนที่ R, String json, list r2) {
บูลีน syh = true;
บูลีน dyh = true; // คำพูดเดี่ยว
บูลีน dkh = true; // braces
บูลีน zkh = true; // brackets
บูลีน iSkey = true;
StringBuffer key = new StringBuffer ();
stringBuffer value = new StringBuffer ();
สำหรับ (int i = 1; i <json.length ()-1; i ++) {
char item = json.charat (i);
if (dyh && syh && zkh) ถ้า ('{' == รายการ || '}' == รายการ) {
dkh =! dkh;
-
if (dyh && syh && dkh) ถ้า ('[' == รายการ || ']' == รายการ) {
zkh =! zkh;
-
if (dyh && dkh && zkh) ถ้า ('' '== รายการ) {
syh =! syh;
ดำเนินการต่อ;
-
if (syh && dkh && zkh) ถ้า (syh) ถ้า ('/' '== รายการ) {
dyh =! dyh;
ดำเนินการต่อ;
-
ถ้า (dyh && syh && dkh & zkh) ถ้า (r2 == null) ถ้า (dyh) ถ้า (':' == รายการ) {
ISKEY = FALSE;
ดำเนินการต่อ;
-
if (dyh && syh && dkh & zkh) ถ้า (',' == รายการ) {
iSkey = true;
ถ้า (r! = null) {
r.put (key.toString (), แยกวิเคราะห์ (value.toString ()));
-
ถ้า (r2! = null) {
r2.add (parse (key.toString ()));
-
key = new StringBuffer ();
value = new StringBuffer ();
ดำเนินการต่อ;
-
ถ้า (ISKEY) {
key.append (รายการ);
}อื่น{
value.append (รายการ);
-
-
if (! key.toString (). trim (). เท่ากับ ("")) {
ถ้า (r! = null) {
if (value.toString (). trim (). Equals ("")) โยน runtimeException ใหม่ ("ข้อผิดพลาดรูปแบบ JSON");
r.put (key.toString (), แยกวิเคราะห์ (value.toString ()));
-
ถ้า (r2! = null) {
r2.add (parse (key.toString ()));
-
-
-
-
เอาต์พุตคอนโซล
การคัดลอกรหัสมีดังนี้:
{"AA": "123", "CC": ["1", "2", "3", "4", {"BB": "234", "CD": "F"}]}