zl程序教程

您现在的位置是:首页 >  后端

当前栏目

json转换成java对象示例

JAVA对象JSONJSON 示例 转换成
2023-06-13 09:15:24 时间

json字符串转Java对象有很多工具可以使用,下面的小例子只是我练手的

复制代码代码如下:

importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.List;
importjava.util.Map;

importcom.jfinal.kit.JsonKit;


publicclassJsonToJavaObject{

 publicstaticvoidmain(String[]args){
  Objecto1=parse("{\"aa\":123,cc:[1,2,3,4,{cd:f,bb:234}]}");
  System.out.println(JsonKit.toJson(o1));
 }
 publicstaticObjectparse(Stringjson){
  if(json==null){
   returnnull;
  }
  json=json.trim();
  if("string".equals(typeof(json))){
   returnjson;
  }

  if("map".equals(typeof(json))){
   returnparseMap(json);
  }

  if("list".equals(typeof(json))){
   returnparseList(json);
  }

  returnnull;
 }

 publicstaticMapparseMap(Stringjson){
  if(!"map".equals(typeof(json))){
   thrownewRuntimeException("json不是Map类型");
  }
  Mapr=newHashMap();
  parseToken(r,json,null);
  returnr;
 }

 publicstaticListparseList(Stringjson){
  if(!"list".equals(typeof(json))){
   thrownewRuntimeException("json不是list类型");
  }
  Listr=newArrayList();
  parseToken(null,json,r);
  returnr;
 }

 publicstaticStringtypeof(Stringjson){
  if(json.length()==0)return"string";
  if("{"==json.charAt(0)){
   if("}"==json.charAt(json.length()-1)){
    return"map";
   }
  }

  if("["==json.charAt(0)){
   if("]"==json.charAt(json.length()-1)){
    return"list";
   }
  }

  return"string";
 }
 privatestaticvoidparseToken(Mapr,Stringjson,Listr2){
  booleansyh=true;//双引号
  booleandyh=true;//单引号
  booleandkh=true;//大括号
  booleanzkh=true;//中括号
  booleanisKey=true;
  StringBufferkey=newStringBuffer();
  StringBuffervalue=newStringBuffer();
  for(inti=1;i<json.length()-1;i++){
   charitem=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;
    continue;
   }
   if(syh&&dkh&&zkh)if(syh)if("\""==item){
    dyh=!dyh;
    continue;
   }
   if(dyh&&syh&&dkh&&zkh)if(r2==null)if(dyh)if(":"==item){
    isKey=false;
    continue;
   }
   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=newStringBuffer();
    value=newStringBuffer();
    continue;
   }
   if(isKey){
    key.append(item);
   }else{
    value.append(item);
   }
  }
  if(!key.toString().trim().equals("")){
   if(r!=null){
    if(value.toString().trim().equals(""))thrownewRuntimeException("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"}]}