將Json對象轉化爲Java實體類

package com.cwq.main;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import org.json.JSONException;
import org.json.JSONObject;

public class PojoFactory {

	public static void main(String[] args) throws Exception {
		System.out.println("請輸入要創建的類名:(格式爲:*.java)");
		Scanner s1 = new Scanner(System.in);
		String className = s1.nextLine();
		
		System.out.println("請輸入json對象:");
		String jsonString = s1.nextLine();
		//String jsonString = "{id : 10, name : '小明', age : 18, score : 88.5, city : '北京', isgood : true}";
		Map<Object, Object> map = jsonToMap(jsonString);
		generateFile(className, map);
		System.out.println("創建java實體類成功!");
		s1.close();
	}
	
	/**
     * 將Json對象轉換成Map
     * 
     * @param jsonObject
     *            json對象
     * @return Map對象
     * @throws JSONException
     */
    @SuppressWarnings("unchecked")
	public static Map<Object, Object> jsonToMap(String jsonString) throws JSONException {

        JSONObject jsonObject = new JSONObject(jsonString);
        
        Map<Object, Object> result = new HashMap<Object, Object>();
        Iterator<Object> iterator = jsonObject.keys();
        String key = null;
        Object value = null;
        
        while (iterator.hasNext()) {

            key = (String) iterator.next();
            value = jsonObject.get(key);
            if (value instanceof String) {
            	result.put(key, (String)value);
            } else if (value instanceof Integer) {
            	result.put(key, (Integer)value);
            } else if (value instanceof Double) {
            	result.put(key, (Double)value);
            } else if (value instanceof Boolean) {
            	result.put(key, (Boolean)value);
            } else {
            	result.put(key, value);
            }
        }
        return result;

    }
    
	public static void generateFile(String className, Map<Object, Object> map) throws IOException {
    	
    	String path = PojoFactory.class.getResource("").getPath();
    	path = path.replace("bin", "src")+"/"+className;
    	File f = new File(path);
    	if (!f.isFile()) {
    		f.createNewFile();
    	}
    	FileWriter fw = null;
    	BufferedWriter bw = null;
    	try {
    		fw = new FileWriter(f);
    		bw = new BufferedWriter(fw);
    		bw.write("package "+PojoFactory.class.getPackage().getName()+";");
    		bw.write("\n\r");
    		bw.write("public class "+className.replace(".java", "")+" {\n\r");
    		
    	    for(Map.Entry<Object, Object> entry : map.entrySet()) {
    	    	Object value = entry.getValue();
    	    	if (value instanceof String) {
    	    		bw.write("\tprivate String "+entry.getKey()+";\n");
                } else if (value instanceof Integer) {
                	bw.write("\tprivate int "+entry.getKey()+";\n");
                } else if (value instanceof Double) {
                	bw.write("\tprivate double "+entry.getKey()+";\n");
                } else if (value instanceof Boolean) {
                	bw.write("\tprivate boolean "+entry.getKey()+";\n");
                }
    	    }
    	    
    	    bw.write("\n");
    	    
    	    for(Map.Entry<Object, Object> entry : map.entrySet()) {
    	    	Object value = entry.getValue();
    	    	String name = entry.getKey().toString();
    	    	String getName = "get" + name.substring(0,1).toUpperCase() + name.substring(1);
    	    	String setName = "set" + name.substring(0,1).toUpperCase() + name.substring(1);
    	    	if (value instanceof String) {
    	    		bw.write("\tpublic void "+ setName+"(String " + name + ") {\n");
    	    		bw.write("\t\t"+"this." + name+ " = "+ name + ";\n\t}\n\r");
    	    		
    	    		bw.write("\tpublic String "+ getName+"() {\n");
    	    		bw.write("\t\t"+"return " + name + ";\n\t}\n\r");
                } else if (value instanceof Integer) {
                	bw.write("\tpublic void "+ setName+"(int " + name + ") {\n");
    	    		bw.write("\t\t"+"this." + name+ " = "+ name + ";\n\t}\n\r");
                	
                	bw.write("\tpublic int "+ getName+"() {\n");
                	bw.write("\t\t"+"return " + name + ";\n\t}\n\r");
                } else if (value instanceof Double) {
                	bw.write("\tpublic void "+ setName+"(double " + name + ") {\n");
    	    		bw.write("\t\t"+"this." + name+ " = "+ name + ";\n\t}\n\r");
                	
                	bw.write("\tpublic double "+ getName+"() {\n");
                	bw.write("\t\t"+"return " + name + ";\n\t}\n\r");
                } else if (value instanceof Boolean) {
                	bw.write("\tpublic void "+ setName+"(boolean " + name + ") {\n");
    	    		bw.write("\t\t"+"this." + name+ " = "+ name + ";\n\t}\n\r");
                	
                	bw.write("\tpublic boolean "+ getName+"() {\n");
                	bw.write("\t\t"+"return " + name + ";\n\t}\n\r");
                }
    	    }
    	    
    		bw.write("}");
		} finally {
			if (bw != null) {
				bw.close();
				bw = null;
			}
			if (fw != null) {
				fw.close();
				fw = null;
			}
		}
    }
	
}


源碼下載

http://download.csdn.net/detail/qq756703833/8348025


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章