JSON封装并使用

本文介绍了一个用于Java的JSON工具类,该类提供了将各种Java对象转换为JSON字符串的方法,包括基本类型、数组、列表、集合及自定义Bean对象等。通过具体的实现代码和调用示例,展示了如何高效地进行JSON数据的序列化。
摘要由CSDN通过智能技术生成

//--------json工具类

package com.hisunsray.util;

import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JsonUtils {
    public static String stringToJson(String s) {
        if (s == null) {
            return nullToJson();
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            switch (ch) {
            case '"':
                sb.append("///"");
                break;
            case '//':
                sb.append("");
                break;
            case '/b':
                sb.append("//b");
                break;
            case '/f':
                sb.append("//f");
                break;
            case '/n':
                sb.append("//n");
                break;
            case '/r':
                sb.append("//r");
                break;
            case '/t':
                sb.append("//t");
                break;
            case '/':
                sb.append("///");
                break;
            default:
                if (ch >= '/u0000' && ch <= '/u001F') {
                    String ss = Integer.toHexString(ch);
                    sb.append("//u");
                    for (int k = 0; k < 4 - ss.length(); k++) {
                        sb.append('0');
                    }
                    sb.append(ss.toUpperCase());
                } else {
                    sb.append(ch);
                }
            }
        }
        return sb.toString();
    }

    public static String nullToJson() {
        return "";
    }

    public static String objectToJson(Object obj) {
        StringBuilder json = new StringBuilder();
        if (obj == null) {
            json.append("/"/"");
        } else if (obj instanceof Number) {
            json.append(numberToJson((Number) obj));
        } else if (obj instanceof Boolean) {
            json.append(booleanToJson((Boolean) obj));
        } else if (obj instanceof String) {
            json.append("/"").append(stringToJson(obj.toString())).append("/"");
        } else if (obj instanceof Object[]) {
            json.append(arrayToJson((Object[]) obj));
        } else if (obj instanceof List) {
            json.append(listToJson((List<?>) obj));
        } else if (obj instanceof Map) {
            json.append(mapToJson((Map<?, ?>) obj));
        } else if (obj instanceof Set) {
            json.append(setToJson((Set<?>) obj));
        } else {
            json.append(beanToJson(obj));
        }
        return json.toString();
    }

    public static String numberToJson(Number number) {
        return number.toString();
    }

    public static String booleanToJson(Boolean bool) {
        return bool.toString();
    }

    /** *//** *//** *//**
     * @param bean
     *            bean
对象
     * @return String
     */
    public static String beanToJson(Object bean) {
        StringBuilder json = new StringBuilder();
        json.append("{");
        PropertyDescriptor[] props = null;
        try {
            props = Introspector.getBeanInfo(bean.getClass(), Object.class)
                    .getPropertyDescriptors();
        } catch (IntrospectionException e) {
        }
        if (props != null) {
            for (int i = 0; i < props.length; i++) {
                try {
                    String name = objectToJson(props[i].getName());
                    String value = objectToJson(props[i].getReadMethod()
                            .invoke(bean));
                    json.append(name);
                    json.append(":");
                    json.append(value);
                    json.append(",");
                } catch (Exception e) {
                }
            }
            json.setCharAt(json.length() - 1, '}');
        } else {
            json.append("}");
        }
        return json.toString();
    }

    /** *//** *//** *//**
     * @param list
     *            list
对象
     * @return String
     */
    public static String listToJson(List<?> list) {
        StringBuilder json = new StringBuilder();
        json.append("[");
        if (list != null && list.size() > 0) {
            for (Object obj : list) {
                json.append(objectToJson(obj));
                json.append(",");
            }
            json.setCharAt(json.length() - 1, ']');
        } else {
            json.append("]");
        }
        return json.toString();
    }

    /** *//** *//** *//**
     * @param array
     *           
对象数组
     * @return String
     */
    public static String arrayToJson(Object[] array) {
        StringBuilder json = new StringBuilder();
        json.append("[");
        if (array != null && array.length > 0) {
            for (Object obj : array) {
                json.append(objectToJson(obj));
                json.append(",");
            }
            json.setCharAt(json.length() - 1, ']');
        } else {
            json.append("]");
        }
        return json.toString();
    }

    /** *//** *//** *//**
     * @param map
     *            map
对象
     * @return String
     */
    public static String mapToJson(Map<?, ?> map) {
        StringBuilder json = new StringBuilder();
        json.append("{");
        if (map != null && map.size() > 0) {
            for (Object key : map.keySet()) {
                json.append(objectToJson(key));
                json.append(":");
                json.append(objectToJson(map.get(key)));
                json.append(",");
            }
            json.setCharAt(json.length() - 1, '}');
        } else {
            json.append("}");
        }
        return json.toString();
    }

    /** *//** *//** *//**
     * @param set
     *           
集合对象
     * @return String
     */
    public static String setToJson(Set<?> set) {
        StringBuilder json = new StringBuilder();
        json.append("[");
        if (set != null && set.size() > 0) {
            for (Object obj : set) {
                json.append(objectToJson(obj));
                json.append(",");
            }
            json.setCharAt(json.length() - 1, ']');
        } else {
            json.append("]");
        }
        return json.toString();
    }

}

 

在调用类中写

/**

* 查询城市信息

*/

PaymentResourceManager prm = PaymentResourceManager.getInstance();

// 得到城市信息

List cityList = prm.getCityList(feeType + province);

String printStr = JsonUtils.listToJson(cityList);

response.getWriter().println(printStr);

return null;

 

 

在页面中访问

var pre_url = "/user/payment.do?method=getSomeThing;

var resultProvArray;

$.ajax({

type: "POST",

url: pre_url,

data: "",

dataType:   "json",

success: function(msg){

if(msg!=null&&msg.length>0){

resultProvArray=msg;

for(var i=0;i<msg.length;i++){

var provCode=msg[i].provCode;//省代码

var provName=msg[i].provName;//省名称

$("#province").append("<OPTION   value='"+provCode+"'>"+provName+"</OPTION>");

}

}

else{

$("#province").empty();//清空省份

$("#province").append("<OPTION value='' selected >--所在省份--</OPTION>");

}

 

}})

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值