هناك العديد من الأدوات اللازمة لتحويل سلسلة 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)) ؛
}
تحليل كائن ثابت عام (سلسلة JSON) {
if (json == null) {
العودة لاغية.
}
json = json.trim () ؛
if ("string" .equals (typeof (json))) {
إرجاع JSON ؛
}
if ("Map" .equals (typeof (json))) {
إرجاع parsemap (JSON) ؛
}
if ("List" .equals (typeof (json))) {
إرجاع arselist (JSON) ؛
}
العودة لاغية.
}
الخريطة الثابتة العامة parsemap (سلسلة json) {
if (! "Map" .equals (typeof (json))) {
رمي New RunTimeException ("JSON ليس نوع خريطة") ؛
}
خريطة r = new hashmap () ؛
Parsetoken (R ، Json ، Null) ؛
العودة ص.
}
القائمة الثابتة العامة parselist (سلسلة json) {
if (! "قائمة" .equals (typeof (json))) {
رمي New RunTimeException ("JSON ليس نوع قائمة") ؛
}
قائمة r = new ArrayList () ؛
Parsetoken (Null ، Json ، R) ؛
العودة ص.
}
سلسلة ثابتة من النوع (سلسلة json) {
if (json.length () == 0) إرجاع "سلسلة" ؛
if ('{' == json.charat (0)) {
if ('}' == json.charat (json.length ()-1)) {
إرجاع "الخريطة" ؛
}
}
if ('[' == json.charat (0)) {
إذا (']' == json.charat (json.length ()-1)) {
إرجاع "قائمة" ؛
}
}
إرجاع "سلسلة" ؛
}
parsetoken paretoken الثابتة (MAP R ، String JSON ، قائمة R2) {
Boolean Syh = صواب ؛
Boolean Dyh = true ؛ // اقتباسات واحدة
Boolean DKH = صحيح ؛ // الأقواس
منطقية ZKH = صواب ؛ // قوسين
منطقية iskey = صحيح ؛
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) if ('{' == item || '}' == item) {
DKH =! DKH ؛
}
if (dyh && syh && dkh) if ('[' == item || ']' == item) {
ZKH =! ZKH ؛
}
if (dyh && dkh && zkh) if ('' '== item) {
syh =! syh ؛
يكمل؛
}
if (syh && dkh && zkh) if (syh) if ('/' '== item) {
dyh =! dyh ؛
يكمل؛
}
if (dyh && syh && dkh & zkh) if (r2 == null) if (dyh) if (':' == item) {
iskey = false ؛
يكمل؛
}
if (dyh && syh && dkh & zkh) if ('،' == item) {
iskey = صحيح ؛
if (r! = null) {
R.Put (key.toString () ، parse (value.toString ())) ؛
}
if (r2! = null) {
r2.add (parse (key.toString ())) ؛
}
المفتاح = جديد StringBuffer () ؛
value = new StringBuffer () ؛
يكمل؛
}
إذا (iskey) {
key.append (item) ؛
}آخر{
value.append (item) ؛
}
}
if (! key.toString (). trim (). يساوي ("")) {
if (r! = null) {
if (value.toString (). trim (). equals ("")) رمي RunTimeException ("json format error") ؛
R.Put (key.toString () ، parse (value.toString ())) ؛
}
if (r2! = null) {
r2.add (parse (key.toString ())) ؛
}
}
}
}
إخراج وحدة التحكم
نسخة الكود كما يلي:
{"AA": "123" ، "CC": ["1" ، "2" ، "3" ، "4" ، {"BB": "234" ، "CD": "F"}]}}