jsonObject的使用

编程技术  /  houtizong 发布于 3年前   81

        在项目中难免会用java处理json格式的数据,因此封装了一个JSONUtil工具类。

JSONUtil.java

package com.bijian.json.study;import java.util.ArrayList;import java.util.Date;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import net.sf.json.JsonConfig;import net.sf.json.util.CycleDetectionStrategy;public class JSONUtil {/** * 从一个JSON 对象字符格式中得到一个java对象 * @param jsonString * @param pojoCalss * @return */public static Object getObject4JsonString(String jsonString, Class pojoCalss) {Object pojo;JSONObject jsonObject = JSONObject.fromObject(jsonString);pojo = JSONObject.toBean(jsonObject, pojoCalss);return pojo;}/** * 从json HASH表达式中获取一个map,改map支持嵌套功能 * @param jsonString * @return */public static Map getMap4Json(String jsonString) {JSONObject jsonObject = JSONObject.fromObject(jsonString);Iterator keyIter = jsonObject.keys();String key;Object value;Map valueMap = new HashMap();while (keyIter.hasNext()) {key = (String) keyIter.next();value = jsonObject.get(key);valueMap.put(key, value);}return valueMap;}/** *  * 从json数组中得到相应java数组 *  * @param jsonString *  * @return */public static Object[] getObjectArray4Json(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);return jsonArray.toArray();}/** * 从json对象集合表达式中得到一个java对象列表 * @param jsonString * @param pojoClass * @return */public static List getList4Json(String jsonString, Class pojoClass) {JSONArray jsonArray = JSONArray.fromObject(jsonString);JSONObject jsonObject;Object pojoValue;List list = new ArrayList();for (int i = 0; i < jsonArray.size(); i++) {jsonObject = jsonArray.getJSONObject(i);pojoValue = JSONObject.toBean(jsonObject, pojoClass);list.add(pojoValue);}return list;}/** *  * 从json数组中解析出java字符串数组 *  * @param jsonString *  * @return */public static String[] getStringArray4Json(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);String[] stringArray = new String[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {stringArray[i] = jsonArray.getString(i);}return stringArray;}/** * 从json数组中解析出javaLong型对象数组 * @param jsonString * @return */public static Long[] getLongArray4Json(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Long[] longArray = new Long[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {longArray[i] = jsonArray.getLong(i);}return longArray;}/** * 从json数组中解析出java Integer型对象数组 * @param jsonString * @return */public static Integer[] getIntegerArray4Json(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Integer[] integerArray = new Integer[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {integerArray[i] = jsonArray.getInt(i);}return integerArray;}/** * 从json数组中解析出java Date 型对象数组,使用本方法必须保证 * @param jsonString * @return */public static Date[] getDateArray4Json(String jsonString, String DataFormat) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Date[] dateArray = new Date[jsonArray.size()];String dateString;Date date;for (int i = 0; i < jsonArray.size(); i++) {dateString = jsonArray.getString(i);date = DateUtil.stringToDate(dateString, DataFormat);dateArray[i] = date;}return dateArray;}/** * 从json数组中解析出java Integer型对象数组 * @param jsonString * @return */public static Double[] getDoubleArray4Json(String jsonString) {JSONArray jsonArray = JSONArray.fromObject(jsonString);Double[] doubleArray = new Double[jsonArray.size()];for (int i = 0; i < jsonArray.size(); i++) {doubleArray[i] = jsonArray.getDouble(i);}return doubleArray;}/** *  * 将java对象转换成json字符串 *  * @param javaObj *  * @return */public static String getJsonString4JavaPOJO(Object javaObj) {JSONObject json;json = JSONObject.fromObject(javaObj);return json.toString();}/** * 将java对象转换成json字符串,并设定日期格式 * @param javaObj * @param dataFormat * @return */public static String getJsonString4JavaPOJO(Object javaObj, String dataFormat) {JSONObject json;JsonConfig jsonConfig = configJson(dataFormat);json = JSONObject.fromObject(javaObj, jsonConfig);return json.toString();}/** * JSON 时间解析器具 * @param datePattern * @return */public static JsonConfig configJson(String datePattern) {JsonConfig jsonConfig = new JsonConfig();jsonConfig.setExcludes(new String[] { "" });jsonConfig.setIgnoreDefaultExcludes(false);jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);jsonConfig.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor(datePattern));return jsonConfig;}/** * @param excludes * @param datePattern * @return */public static JsonConfig configJson(String[] excludes,String datePattern) {JsonConfig jsonConfig = new JsonConfig();jsonConfig.setExcludes(excludes);jsonConfig.setIgnoreDefaultExcludes(false);jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);jsonConfig.registerJsonValueProcessor(Date.class,new DateJsonValueProcessor(datePattern));return jsonConfig;}/** * @param args */public static void main(String[] args) {Object obj01 = getObject4JsonString("{'name':'bijian','age':'30','phone':'13899998888'}", TestObject.class);System.out.println(obj01);Object[] obj = getObjectArray4Json("['json','is','easy']");for(Object o: obj) {System.out.println(o);}Map map = getMap4Json("{'json':'001','is':'002','easy':'003'}");System.out.println(map);}}

DateUtil.java

package com.bijian.json.study;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class DateUtil {public static Date stringToDate(String dateString, String dataFormat) {SimpleDateFormat sdf = new SimpleDateFormat(dataFormat);Date date = null;try {date = sdf.parse(dateString);} catch (ParseException e) {e.printStackTrace();}return date;}}

DateJsonValueProcessor.java

package com.bijian.json.study;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Date;import net.sf.json.JsonConfig;import net.sf.json.processors.JsonValueProcessor;public class DateJsonValueProcessor implements JsonValueProcessor {public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";private DateFormat dateFormat;/** * 构造方法. *  * @param datePattern *            日期格式 */public DateJsonValueProcessor(String datePattern) {if (null == datePattern) {dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);}else {dateFormat = new SimpleDateFormat(datePattern);}}/* * (非 Javadoc) *  * @see net.sf.json.processors.JsonValueProcessor#processArrayValue(java. * lang.Object, net.sf.json.JsonConfig) */public Object processArrayValue(Object arg0, JsonConfig arg1) {// TODO 自动生成方法存根return process(arg0);}/* * (非 Javadoc) *  * @see net.sf.json.processors.JsonValueProcessor#processObjectValue(java * .lang.String, java.lang.Object, net.sf.json.JsonConfig) */public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {return process(arg1);}private Object process(Object value) {return dateFormat.format((Date) value);}}

TestObject.java

package com.bijian.json.study;public class TestObject {private String name;private int age;private String phone;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}}

JSONUtil.java中的main方法运行结果:

com.bijian.json.study.TestObject@56f631jsoniseasy{is=002, easy=003, json=001}

 

文章来源:http://blog.163.com/caoyanhua_05/blog/static/63966999200911184219995/

下一篇:Karam与TDD

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客