将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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值