通常采用json-lib来处理java与json之间的转换。
下载地址为:
http://json-lib.sourceforge.net/
两者间的数据转换为:
- JSON <=> java
- string <=> java.lang.String, java.lang.Character, char
- number <=> java.lang.Number, byte, short, int, long, float, double
- true|false <=> java.lang.Boolean, boolean
- null <=> null
- function <=> net.sf.json.JSONFunction
- array <=> net.sf.json.JSONArray (object, string, number, boolean, function)
- object <=> net.sf.json.JSONObject
Json在json-lib中对应的对象是JSON, 他下面的三个子类,JSONObject, JSONArray, JSONNull.
无论是json还是java 对象都是通过JSONSerializer.toJSON( obj );转成为JSONObject或JSONArray. 再用 JSONSerializer.toJava( jsonObject )为java类。
public static JSON toJSON( Object object, JsonConfig jsonConfig ) {
JSON json = null;
if( object == null ){
json = JSONNull.getInstance();
}else if( object instanceof JSONString ){
json = toJSON( (JSONString) object, jsonConfig );
}else if( object instanceof String ){
json = toJSON( (String) object, jsonConfig );
}else if( JSONUtils.isArray( object ) ){
json = JSONArray.fromObject( object, jsonConfig );
}else{
try{
json = JSONObject.fromObject( object, jsonConfig );
}catch( JSONException e ){
if( object instanceof JSONTokener ){
((JSONTokener) object).reset();
}
json = JSONArray.fromObject( object, jsonConfig );
}
}
return json;
}
返回json => json.toString()就是jsonStr,
转为java类:
JSONObject.toBean(json) or JSONArray.toArray(json)
1. Java到json转换时可通过JsonConfig来控制。
JSONSerializer.toJSON(javaobj, jsonConfig)=>jsonobj
//实际方法为:
json = JSONArray.fromObject( object, jsonConfig );
json = JSONObject.fromObject( object, jsonConfig );
setJsonPropertyFilter(PropertyFilter); //设置哪些字段要转
registerJsonBeanProcessor(class, JsonBeanProcessor);
registerJsonValueProcessor(class, JsonValueProcessor); //处理Bean对象的属性值的转换
2. json-lib是通过Morpher来jsonstr转换对象,对于不知道类型的转为 MorpherDynBean。
对于复杂的对象想通过Morpher来转就比较困难。可通过jsonConfig
JSONSerializer.toJSON(str, c) => JSONObject或JSONArray
再根据如下转成对象
JSONSerializer.toJava(jsonObject, jsonConfig)=>Object
//实际方法为:
JSONObject.toBean(jsonObject, jsonConfig) ==> Object;
JSONArray.toArray(jsonObject, jsonConfig) ==> Object;
JSONArray.toList(jsonObject, jsonConfig) ==> List;
setRootClass(bean.class); // 设置要转成的类,会根据属性的类型来转
BeanB {BeanA a; BeanA[] as} // 转时会将DynBean转为BeanA
setClassMap() // {key, class} //key中对应的类
setArrayMode() //设置JSONArray转成的形式有三种 MODE_OBJECT_ARRAY, MODE_LIST or MODE_SET
morpherRegistry.registerMorpher( dynaMorpher );
如date:
JSONUtils.getMorpherRegistry().registerMorpher(
new DateMorpher(new String[]{ "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd"
}));
在toBean()时用到Morpher:
//对象:
JSONUtils.getMorpherRegistry().registerMorpher(new BeanMorpher( pd.getPropertyType(),JSONUtils.getMorpherRegistry() ) );
setProperty( root, key, JSONUtils.getMorpherRegistry().morph( pd.getPropertyType(), value ), jsonConfig );
//数组:
ObjectArrayMorpher beanMorpher = new ObjectArrayMorpher(
new BeanMorpher( innerType, JSONUtils.getMorpherRegistry() ) );
JSONUtils.getMorpherRegistry().registerMorpher( beanMorpher );
array = JSONUtils.getMorpherRegistry().morph(
Array.newInstance( innerType, 0 ).getClass(), array );
setProperty( root, key, array, jsonConfig );
与XML互换:
new XMLSerializer().write(jsonObject); =》 xmlStr
new XMLSerializer().read(xmlStr); =》josnobject
分享到:
相关推荐
只需确保 Java 类型与 JSON 结构匹配,`json-lib` 就能正确地进行转换。 6. **处理日期和时间**: JSON 格式不直接支持日期和时间,但 `json-lib` 提供了对日期的处理,例如: ```java jsonSerializer....
4. **XML与JSON转换**:JSON Lib还提供了XML与JSON之间的转换功能,这在需要在两种格式间切换的场景下非常实用。 5. **错误处理**:库中包含了对JSON解析错误的处理机制,帮助开发者捕获和处理可能出现的问题。 6....
- `commons-beanutils-1.8.0.jar`:提供Bean属性的读写操作,方便JSON与Java Bean之间的转换。 - `commons-collections-3.2.1.jar`:提供集合操作的扩展,如映射、过滤等,有助于处理JSON中的数组和对象结构。 - ...
`json-lib`是Java中一个常用的JSON库,它提供了将Java对象转换为JSON格式以及将JSON字符串反序列化为Java对象的功能。 `json-lib-2.4-jdk15`是`json-lib`的一个特定版本,适用于JDK1.5环境。这个库依赖于其他几个...
在JAVA开发中,处理JSON数据通常需要借助特定的库来完成,如本话题中提到的`json-lib`和`ezmorph`。 `json-lib`是一个Java语言实现的JSON库,它提供了多种数据类型到JSON的转换,包括JavaBean、Map、List、数组等。...
JSON-lib是一个Java库,用于处理JSON(JavaScript Object Notation)和XML之间的转换。这个框架使得在Java应用程序中处理这两种数据格式变得简单。JSON是一种轻量级的数据交换格式,被广泛用于Web服务和前后端交互,...
4. **XML与JSON互转**: JSONLib还提供了XML和JSON之间的转换功能,使得在两种格式间切换更加便捷。 5. **自定义序列化和反序列化**: 用户可以自定义类的序列化和反序列化逻辑,以适应特定需求。 **使用JSONLib的...
2. **支持多种Java类型**:JSONlib支持包括基本类型、数组、集合、Map、自定义类等在内的多种Java数据结构与JSON之间的转换。 3. **集成其他库**:在压缩包中,我们看到包含了一些依赖的第三方库,如: - `commons...
6. **与其他技术集成**:JSON Lib可以与Spring框架、Struts等其他Java技术无缝集成,简化JSON数据的处理。 总之,JSON Lib是Java开发中处理JSON数据的一个强大工具,尤其是在JDK 1.5环境下,它提供了稳定和高效的...
总结来说,`json-lib`是Java开发者处理JSON数据的一个强大工具,提供了一整套解决方案,从JSON字符串的解析到Java对象的转换,以及与其他数据格式的交互。这个资源包包含所有必要的依赖,使得开发者能快速集成和使用...
4. 支持流:除了支持对象/JSON与字符串的相互转换,也支持与InputStream/OutputStream的相互转换,处理大数据时比较有用。 5. 无依赖:json-lib是一个独立的jar包,无任何第三方依赖,体积小,易于在项目中使用。 6. 高...
总结来说,Jsonlib是一个强大的JSON处理库,它提供了全面的功能,涵盖了JSON数据的创建、解析、序列化以及与Java对象的相互转换。无论你是开发Web应用还是桌面应用,只要涉及到JSON数据,Jsonlib都能提供便利的支持...
- JSON_lib还支持XML与JSON之间的转换,这对于那些需要在XML和JSON间切换的项目非常有用。 - 可以使用`XMLSerializer`类的`fromXML()`和`toXML()`方法进行转换。 6. **JSONPath表达式**: - JSON_lib实现了类似...
Java JSON的库主要被用来处理JSON(JavaScript Object Notation)数据格式,这是一种轻量级的数据交换格式,广泛用于客户端和服务器之间的数据传输。在Java中,有多种JSON库可供选择,如Jackson、Gson、org.json等。...
JSON-lib是一个Java库,用于将Java对象转换为JSON(JavaScript Object Notation)格式,以及将JSON数据转换回Java对象。这个库提供了多种方法来处理JSON数据,使得在Java应用程序中与JSON交互变得更加简单。JSON是一...
总的来说,JSON-lib.jar作为Java平台上的JSON处理工具,提供了全面而强大的JSON操作功能,包括基本类型的转换、复杂数据结构的处理、XML与JSON之间的转换等。无论你是新手还是经验丰富的开发者,这个库都是处理JSON...
这篇博客“使用json-lib进行Java和JSON之间的转换”将介绍如何使用json-lib这个库在Java程序中有效地进行JSON对象与Java对象间的转换。 首先,json-lib是一个Java库,它提供了一系列的方法来将Java对象转换为JSON...
Java JSON API是Java平台上的库,提供了处理JSON的能力,包括解析JSON字符串、生成JSON对象以及进行JSON与Java对象之间的转换。 在Java中,有多种实现JSON API的库,如Jackson、Gson、org.json和json-lib等。本篇...
JsonLib支持多种数据类型与JSON的转换,包括基本类型、数组、集合、Map以及自定义对象等。使用JsonLib可以轻松地将Java对象转换为JSON字符串,或者将JSON字符串反序列化为Java对象,这对于数据交换和存储非常有用。 ...