json转换成java对象示例
json字符串转Java对象有很多工具可以使用,下面的小例子只是我练手的
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.jfinal.kit.JsonKit; public class 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){ return null; } json = json.trim(); if("string".equals(typeof(json))){ return json; } if("map".equals(typeof(json))){ return parseMap(json); } if("list".equals(typeof(json))){ return parseList(json); } return null; } public static Map parseMap(String json){ if(!"map".equals(typeof(json))){ throw new RuntimeException("json 不是Map类型"); } Map r = new HashMap(); parseToken(r,json,null); return r; } public static List parseList(String json){ if(!"list".equals(typeof(json))){ throw new RuntimeException("json 不是list类型"); } List r = new ArrayList(); parseToken(null, json, r); return r; } public static String typeof(String json){ 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"; } private static void parseToken(Map r, String json,List r2) { boolean syh = true; //双引号 boolean dyh = true;//单引号 boolean dkh = true;//大括号 boolean 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; 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 = new StringBuffer(); value = new StringBuffer(); continue; } if(isKey){ key.append(item); }else{ value.append(item); } } if(!key.toString().trim().equals("")){ if(r != null){ if(value.toString().trim().equals(""))throw 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"}]}
更多json转换成java对象示例相关文章请关注PHP中文网!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Bagaimana cara menukar nama ke nombor untuk melaksanakan penyortiran dalam kumpulan? Apabila menyusun pengguna dalam kumpulan, sering kali perlu menukar nama pengguna ke dalam nombor supaya ia boleh berbeza ...

Analisis fenomena kebocoran memori program Java pada CPU seni bina yang berbeza. Artikel ini akan membincangkan kes di mana program Java mempamerkan tingkah laku memori yang berbeza di lengan dan cpus seni bina x86 ...
