Ada banyak alat untuk digunakan untuk mengonversi string JSON ke objek Java.
Salinan kode adalah sebagai berikut:
impor java.util.arraylist;
impor java.util.hashmap;
impor java.util.list;
impor java.util.map;
impor com.jfinal.kit.jsonkit;
kelas publik jsontojavaObject {
public static void main (string [] args) {
Objek o1 = parse ("{/" aa/": 123, cc: [1,2,3,4, {cd: f, bb: 234}]}");
System.out.println (jsonkit.toJson (O1));
}
public static objek parse (string json) {
if (json == null) {
kembali nol;
}
json = json.trim ();
if ("string" .equals (typeof (json))) {
mengembalikan json;
}
if ("peta" .equals (typeof (json))) {
Return Parsemap (JSON);
}
if ("list" .equals (typeof (json))) {
Return Garselist (JSON);
}
kembali nol;
}
peta public peta statis parsemap (string json) {
if (! "peta" .equals (typeof (json))) {
Lempar RuntimeException baru ("JSON bukan tipe peta");
}
Peta r = hashmap baru ();
Parsetoken (R, JSON, NULL);
mengembalikan r;
}
Public Static List Parselist (String JSON) {
if (! "list" .equals (typeof (json))) {
Lempar RuntimeException baru ("JSON bukan jenis daftar");
}
Daftar R = ArrayList baru ();
Parsetoken (NULL, JSON, R);
mengembalikan r;
}
Public Static String TypeOf (String JSON) {
if (json.length () == 0) mengembalikan "string";
if ('{' == json.charat (0)) {
if ('}' == json.charat (json.length ()-1)) {
mengembalikan "peta";
}
}
if ('[' == json.charat (0)) {
if (']' == json.charat (json.length ()-1)) {
mengembalikan "daftar";
}
}
mengembalikan "string";
}
private static void parsetoken (peta r, string json, daftar r2) {
boolean syh = true; // kutipan ganda
boolean dyh = true; // penawaran tunggal
boolean dkh = true; // kawat gigi
boolean zkh = true; // braket
boolean iskey = true;
Key StringBuffer = StringBuffer baru ();
StringBuffer value = new StringBuffer ();
untuk (int i = 1; i <json.length ()-1; i ++) {
item char = 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;
melanjutkan;
}
if (syh && dkh && zkh) if (syh) if ('/' '== item) {
dyh =! dyh;
melanjutkan;
}
if (dyh && syh && dkh & zkh) if (r2 == null) if (dyh) if (':' == item) {
iskey = false;
melanjutkan;
}
if (dyh && syh && dkh & zkh) if (',' == item) {
iskey = true;
if (r! = null) {
r.put (key.tostring (), parse (value.tostring ()));
}
if (r2! = null) {
r2.add (parse (key.tostring ()));
}
key = new StringBuffer ();
value = new StringBuffer ();
melanjutkan;
}
if (iskey) {
key.pon (item);
}kalau tidak{
value.pend (item);
}
}
if (! key.toString (). trim (). equals ("") {"
if (r! = null) {
if (value.toString (). trim (). Equals ("")) melempar runimeException baru ("kesalahan format json");
r.put (key.tostring (), parse (value.tostring ()));
}
if (r2! = null) {
r2.add (parse (key.tostring ()));
}
}
}
}
Output konsol
Salinan kode adalah sebagai berikut:
{"aa": "123", "cc": ["1", "2", "3", "4", {"bb": "234", "cd": "f"}]}