Есть много инструментов, которые можно использовать для преобразования строки JSON в объекты Java.
Кода -копия выглядит следующим образом:
импортировать java.util.arraylist;
импортировать java.util.hashmap;
импортировать java.util.list;
импортировать java.util.map;
Импорт com.jfinal.kit.jsonkit;
открытый класс jsontojavaobject {
public static void main (string [] args) {
Object O1 = parse ("{/" aa/": 123, cc: [1,2,3,4, {CD: F, BB: 234}]}");
System.out.println (jsonkit.tojson (O1));
}
Public Static Object Parse (String 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))) {
вернуть Parselist (json);
}
вернуть ноль;
}
Общественная статическая карта parsemap (string json) {
if (! "map" .equals (typeof (json))) {
бросить новое runtimeexception («json не тип карты»);
}
Карта r = new hashmap ();
Parsetoken (r, json, null);
возврат R;
}
публичный статический список Parseist (String json) {
if (! "List" .equals (typeof (json))) {
бросить новое runtimeexception («json не тип списка»);
}
Список r = new ArrayList ();
Parsetoken (Null, Json, R);
возврат R;
}
public Static String typeof (String json) {
if (json.length () == 0) вернуть "string";
if ('{' == json.charat (0)) {
if ('}' == json.charat (json.length ()-1)) {
вернуть "карту";
}
}
if ('[' == json.charat (0)) {
if (']' == json.charat (json.length ()-1)) {
вернуть "список";
}
}
вернуть "строку";
}
Private Static Void ParsetOken (Map R, String JSON, List R2) {
Boolean Syh = True; // Двойные цитаты
Boolean dyh = true; // одиночные кавычки
логический dkh = true; // скобки
логический zkh = true; // кронштейны
логический iskey = true;
Stringbuffer key = new StringBuffer ();
StringBuffer value = new StringBuffer ();
for (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 = 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 ();
продолжать;
}
if (iskey) {
key.append (item);
}еще{
value.append (item);
}
}
if (! key.tostring (). trim (). equals ("")) {
if (r! = null) {
if (value.toString (). trim (). equals ("" ")) бросить новое runtimeexception (" ошибка формата json ");
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"}]}