Existem muitas ferramentas a serem usadas para converter a String JSON em objetos Java.
A cópia do código é a seguinte:
importar java.util.arraylist;
importar java.util.hashmap;
importar java.util.list;
importar java.util.map;
importação com.jfinal.kit.jsonkit;
classe pública JSontojavaObject {
public static void main (string [] args) {
Objeto 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) {
retornar nulo;
}
json = json.trim ();
if ("string" .equals (typeof (json))) {
retornar JSON;
}
if ("map" .equals (typeof (json))) {
Parsemap de retorno (JSON);
}
if ("list" .equals (typeof (json))) {
Parselista de retorno (JSON);
}
retornar nulo;
}
Public Static Map Parsemap (String JSON) {
if (! "map" .equals (typeof (json))) {
lançar a nova RuntimeTeException ("JSON não é do tipo de mapa");
}
Mapa r = new hashmap ();
Parsetoken (R, JSON, NULL);
retornar r;
}
Public Static List Parselist (String JSON) {
if (! "List" .equals (typeof (json))) {
lançar a nova RuntimeTeException ("JSON não é um tipo de lista");
}
Lista r = new ArrayList ();
Parsetoken (NULL, JSON, R);
retornar r;
}
public static string typeof (string json) {
if (json.length () == 0) retorna "string";
if ('{' == json.Charat (0)) {
if ('}' == json.charat (json.length ()-1)) {
retornar "mapa";
}
}
if ('[' == json.Charat (0)) {
if (']' == json.charat (json.length ()-1)) {
retornar "lista";
}
}
retornar "string";
}
Parsetoken de void estático privado (mapa r, string json, lista r2) {
boolean syh = true;
booleano dyh = true; // citações únicas
booleano dkh = true; // aparelho
zkh booleano = true; // colchetes
boolean 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;
continuar;
}
if (syh && dkh && zkh) if (syh) if ('/' '== item) {
dyh =! dyh;
continuar;
}
if (dyh && syh && dkh & zkh) if (r2 == null) if (dyh) if (':' == item) {
isKey = false;
continuar;
}
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 ();
valor = new StringBuffer ();
continuar;
}
if (iskey) {
key.append (item);
}outro{
value.append (item);
}
}
if (! key.toString (). TRIM (). Equals ("")) {
if (r! = null) {
if (value.ToString (). TRIM (). Equals ("" ")) lança nova RunTimeException (" Erro de formato JSON ");
r.put (key.toString (), parse (value.toString ()));
}
if (r2! = null) {
r2.add (parse (key.toString ()));
}
}
}
}
Saída do console
A cópia do código é a seguinte:
{"aa": "123", "cc": ["1", "2", "3", "4", {"bb": "234", "CD": "f"}]}