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){
オブジェクト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){
nullを返します。
}
json = json.trim();
if( "string" .equals(typeof(json))){
jsonを返します。
}
if( "map" .equals(typeof(json))){
Parsemap(JSON)を返す;
}
if( "list" .equals(typeof(json))){
Return Parselist(JSON);
}
nullを返します。
}
public static Map parsemap(string json){
if(! "map" .equals(typeof(json))){
新しいruntimeexception( "jsonはマップタイプではない")を投げます);
}
マップr = new Hashmap();
parsetoken(r、json、null);
rを返します。
}
public static list parselist(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)return "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; //単一の引用
boolean dkh = true; //ブレース
ブールZKH = true; //ブラケット
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;
続く;
}
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( ""))new 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"}]}