Jsonlib工具类

本文介绍了一个基于 JSONLib 的 Java 工具类 JsonLibUtil,提供了将 JSON 字符串转换为 Java 对象、Map 和数组的方法,同时也支持将 Java 对象、Map 转换为 JSON 字符串。
package com.yaphis.util.Json;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONStringer;

/**
 * 使用jsonlib.jar来解析生成json 需要引入jsonlib.jar和ezmorph-1.0.6.jar
 * 
 * @author huangchunhui 2014年6月3日 下午8:07:36
 */
public class JsonLibUtil {

    /**
     * 从一个JSON对象字符格式中得到一个java对象 说明:Bean的无参构造函数一定要写, 否则会报异常
     * 
     * @param json
     * @param clazz
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static Object jsonToObject(String json, Class clazz) {
        Object pojo;
        JSONObject jsonObject = JSONObject.fromObject(json);
        pojo = JSONObject.toBean(jsonObject, clazz);
        return pojo;
    }

    /**
     * 从一个JSON对象字符格式中得到一个java对象 说明:Bean的无参构造函数一定要写, 否则会报异常
     * 
     * @param json
     * @param clazz
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static Object jsonToObject(String json, Class clazz, Map<String, Class> classMap) {
        Object pojo;
        JSONObject jsonObject = JSONObject.fromObject(json);
        pojo = JSONObject.toBean(jsonObject, clazz, classMap);
        return pojo;
    }

    /**
     * 将java对象转换成json字符串
     * 
     * @param obj
     * @return
     */
    public static String objectToJson(Object obj) {
        JSONObject json;
        json = JSONObject.fromObject(obj);
        return json.toString();
    }

    /**
     * 从json HASH表达式中获取一个map
     * 
     * @param json
     * @return
     */
    public static Map<String, Object> jsonToMap(String json) {
        JSONObject jsonObject = JSONObject.fromObject(json);
        Map<String, Object> map = new HashMap<String, Object>();
        for (Iterator<?> it = jsonObject.keys(); it.hasNext();) {
            String key = (String) it.next();
            Object value = jsonObject.get(key);
            map.put(key, value);
        }
        return map;
    }

    /**
     * 从Map对象得到Json字串
     * 
     * @param map
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static String mapToJson(Map map) {
        JSONObject json = JSONObject.fromObject(map);
        return json.toString();
    }

    /**
     * 从json字串中得到相应java数组
     * 
     * @param jsonString like "[\"李斯\",100]"
     * @return
     */
    public static Object[] jsonToArray(String json) {
        JSONArray jsonArray = JSONArray.fromObject(json);
        return jsonArray.toArray();
    }

    /**
     * 用JSONStringer构造一个JsonString
     * 
     * @param m
     * @return
     */
    @SuppressWarnings({ "rawtypes", "unused" })
    public static String buildJsonString(Map m) {
        JSONStringer stringer = new JSONStringer();
        stringer.object();
        for (Object key : m.keySet()) {
            stringer.key((String) key).value((String) m.get(key));
        }
        stringer.key("phone");
        stringer.array();// begin nesting a array
        stringer.value("13998098000");
        stringer.value("8765432");
        stringer.object();// nestring object in array
        stringer.key("ppcall");
        stringer.value(53881);
        stringer.endObject();
        stringer.value("13990980980");
        stringer.endArray();// end nesting a array
        stringer.endObject();
        // 或者
        String jsonString = new JSONStringer().object().key("JSON").value("Hello, World!").key("Flex").value("OK").endObject().toString();
        return stringer.toString();
    }
}


转载于:https://my.oschina.net/yaphis/blog/352884

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值