`
- 浏览:
121345 次
- 性别:
- 来自:
郑州
-
一个java处理JSON格式数据的通用类
进入需要在项目中用java处理json格式的数据,因此封装了一个class,现将这个class共享出来和大家分享
/**
* Copyright (c) linkwise 2007-2009 corporation.
* All rights reserved
*/
package com.linghui.common.util;
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;
import com.linghui.common.util.DateUtil;
import com.linghui.common.util.jsonutil.DateJsonValueProcessor;
/**
* @author robert.feng
*
*/
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();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
}
/**
* 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;
}
}
/**
* linkwise
*/
package com.linghui.common.util.jsonutil;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
* @author robert.feng
*
*/
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) {
// TODO 自动生成方法存根
return process(arg1);
}
private Object process(Object value) {
return dateFormat.format((Date) value);
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
Java JSON API是Java平台上的库,提供了处理JSON的能力,包括解析JSON字符串、生成JSON对象以及进行JSON与Java对象之间的转换。 在Java中,有多种实现JSON API的库,如Jackson、Gson、org.json和json-lib等。本篇...
Java JSON 依赖包是开发Java应用时处理JSON数据的关键组件,尤其在进行Web服务或前后端交互时。JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。...
1. `json-lib-2.3-jdk15.jar`:这可能是JSON库的一个版本,JSON Lib是一个Java实现的JSON处理器,它提供了将Java对象转换为JSON格式和从JSON反序列化回Java对象的功能。版本2.3-jdk15可能表示它兼容Java 1.5版本。 ...
Java JSON的库主要被用来处理JSON(JavaScript Object Notation)数据格式,这是一种轻量级的数据交换格式,广泛用于客户端和服务器之间的数据传输。在Java中,有多种JSON库可供选择,如Jackson、Gson、org.json等。...
Java JSON技术是开发中常用的序列化和反序列化工具,特别是在Web服务和后端开发中。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java中,处理...
JSON-B(Java API for JSON Binding)是Java的一个标准,类似于JAXB,但用于JSON和Java对象之间的自动绑定。它简化了JSON与Java对象的转换过程。 这些jar包包含了处理JSON所需的各种工具和功能,例如: - JSON解析...
Java JSON Jar包是Java开发中处理JSON数据必不可少的工具库,尤其在进行Web服务或前后端交互时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁和高效而受到广泛欢迎。在Java中,如果...
Java中的json-lib库是处理JSON数据的一个常用工具,它提供了将Java对象转换为JSON字符串以及从JSON字符串反序列化回Java对象的功能。然而,在处理复杂的嵌套数据结构时,如果不小心可能会导致无限循环的问题。 在...
该压缩包包含json使用到的所有jar,jar版本如下: commons-beanutils-1.9.2.jar,commons-collections-3.2.1.jar,commons-lang-2.6.jar, commons-logging-1.1.1.jar,ezmorph-1.0.6.jar,json-lib-2.4-jdk15.jar ...
JsonPath 是java Json库,最新源代码JsonPath 是java Json库,最新源代码JsonPath 是java Json库,最新源代码JsonPath 是java Json库,最新源代码JsonPath 是java Json库,最新源代码JsonPath 是java Json库,最新源...
Java中的`javajson`包,就是为了让Java开发者能够方便地处理JSON数据,将Java对象转换为JSON字符串,或者将JSON字符串解析为Java对象。 在给定的压缩包文件中,我们看到几个关键的库文件,这些是`javajson`包正常...
里面包含所有java 使用json所需要的jar包,包含json-lib-2.4-jdk15,ezmorph-1.0.6,commons-logging-1.1.1,commons-lang-2.5,commons-beanutils-1.8.0,commons-collections-3.2.1
关于java json解析的简单测试,简单示例
Java中的JSON(JavaScript Object Notation)序列化与反序列化是开发过程中常见且重要的操作,主要用于数据交换和存储。JSON是一种轻量级的数据交换格式,它允许我们将Java对象转换为JSON字符串,反之亦然,方便在...
1. **json-lib**: `json-lib-2.2.2-jdk15.jar`是这个集合中的核心包,它是一个Java实现的JSON库,提供了将Java对象转换为JSON格式和从JSON字符串还原Java对象的功能。支持多种Java类型,如JavaBean、Map、List等,...
java json所依赖的所有jar包(json.jar.rar) java json所依赖的所有jar包(json.jar.rar) java json所依赖的所有jar包(json.jar.rar)
本文将详细探讨Java中JSON与XML的互转,以及如何在实际开发中运用这些技术。 标题:“java json xml转换” 描述:“java版的json与xml之间的转换的实例demo” JSON和XML各有优缺点。JSON以其简洁、易于阅读和生成...
java json 工具类java json 工具类 java json 工具类java json 工具类 java json 工具类java json 工具类 java json 工具类java json 工具类
`javajson.zip`这个压缩包可能包含的是与Java处理JSON相关的类库或者示例代码。虽然没有具体文件内容,但我们可以根据常见场景来分析其中可能涵盖的知识点。 1. **JSON基本结构**:JSON由对象和数组构成,对象是...
1. Jackson:Jackson是Java中广泛使用的JSON库,提供了高性能的读写功能,支持多种API,如`ObjectMapper`用于对象与JSON之间的转换,`JsonNode`用于处理JSON树结构。 2. Gson:Google提供的Gson库可以轻松地将Java...