import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.util.CollectionUtils;
/**
* JavaBean 转换XML和JSON 的用法 * @author
*/
public class JsonUtil {
private static ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
/**
* 把 java 对象转化为 json 对象
*/
public static String java2json(T t) {
String json = null;
try {
json = mapper.writeValueAsString(t); // 把 java 对象转化为 json 对象
} catch (JsonGenerationException ex) {
Logger.getLogger(JsonUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (JsonMappingException ex) {
Logger.getLogger(JsonUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(JsonUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return json;
}
/**
* 把 json 对象转化为 java 对象
*
* 说明:
* 1. json对象中的属性 在java对象中 必须存在, 否则会报错;
* 2. java对象中 可以 包含 json对象中 没有的属性.
*
* 以上两点, 可以总结如下: json对象中的属性列表 必须是 java对象中的属性列表 的一个子集 (子集的特例是: 自己是自己的子集)
*/
public static T json2java(String json, Class valueType) {
T obj = null;
try {
obj = mapper.readValue(json, valueType); // 把 json 对象转化为 java 对象
//User user = mapper.readValue(json, User.class); // 把 json 对象转化为 java 对象
} catch (JsonGenerationException ex) {
Logger.getLogger(JsonUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (JsonMappingException ex) {
Logger.getLogger(JsonUtil.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(JsonUtil.class.getName()).log(Level.SEVERE, null, ex);
}
return obj;
}
/**
* 打印map
*/
private static void printMap(Map map) {
if (CollectionUtils.isEmpty(map)) {
return;
}
Set keySet = map.keySet();
for(String key: keySet) {
System.out.println("key = " + key);
Object obj = map.get(key);
String className = obj.getClass().getName();
System.out.println("type =" + className);
boolean isMap = className.toLowerCase().indexOf("map") >= 0;
boolean isList = className.toLowerCase().indexOf("list") >= 0;
if(isMap) {
System.out.println("==== is map ====");
printMap((Map) obj); //递归调用
}
else if(isList) {
List list = (List) obj;
System.out.println("==== is list ==== , size = " + list.size());
for(Object oo: list) {
System.out.println("element type =" + oo.getClass().getName());
System.out.println("element toString =" + oo.toString());
}
}
else {
System.out.println("obj.toString = " + obj.toString());
}
}
}
/**
* 列表级操作
* @param
* @param collections
* @param clazz
* @author liujie
* @return
*/
public static List json2javaList(JSONArray collections, Class clazz){
JsonConfig jc = new JsonConfig();
jc.setRootClass(clazz);
jc.setCollectionType(ArrayList.class);
return (List) JSONArray.toCollection(collections, jc);
}
/**
* test: 上面两个 "转换" 方法
*/
public static void main(String[] args) {
/*
Apple apple = new Apple();
apple.setId(23);
apple.setName("red");
apple.setPlace("烟台");
String json = java2json(apple);
System.out.println("json = " + json);
json = "{\"name\":\"red\",\"id\":23}";
Apple apple = json2java(json, Apple.class);
System.out.println("apple = " + apple);
*/
}
}
分享到:
相关推荐
**XStream:JavaBean与XML/JSON之间的转换大师** XStream是一个开源库,它为Java对象提供了简单且直观的XML序列化和反序列化的解决方案。它不仅能够将Java对象转换成XML,反之亦然,还能支持JSON格式的转换。这个...
同样,使用Jackson库,我们可以使用`JsonNode`对象的`toPrettyString()`方法将JSON转换为XML: ```java import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; ...
- 将JavaBean转换为XML:`String xml = xstream.toXML(user);` - 将XML反序列化为JavaBean:`User user = (User) xstream.fromXML(xml);` 4. **XStream与JSON转换** XStream不仅支持XML,还内置了对JSON的支持。...
在IT行业中,数据交换和序列化是至关重要的环节,json、JavaBean和XML作为常见的数据表示格式,它们之间的转换需求频繁出现。这篇博客主要探讨了几种用于这些格式互转的工具,下面将详细介绍这些工具及其使用方法。 ...
转换过程与JSON类似,只是使用不同的类和方法,如`JsonConfig`和`XmlUtils`。 在实际应用中,你可能会遇到各种复杂情况,比如处理嵌套的对象和数组,或者自定义转换逻辑。JSON-lib提供了一系列的工具类和方法来处理...
以`Gson`库为例,使用Gson将JavaBean转换为JSON的基本步骤如下: 1. 引入Gson库:在项目中添加Gson的依赖,如Maven的pom.xml文件中添加: ```xml <groupId>com.google.code.gson</groupId> <artifactId>gson ...
2. 使用JAXB将JavaBean转换为XML: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Marshaller; public class XMLConverter { public static void beanToXML(User user, File outputFile) ...
- 使用`JSONObject.fromObject()`方法可以将Java对象转换为JSON格式。 - 示例代码如下: ```java Map, Object> map = new HashMap(); map.put("A", bean); map.put("B", bean); map.put("name", "json"); ...
Xstream 是一个 Java 库,用于处理 XML 文件的序列化和反序列化,同时也支持将 JavaBean 转换为 JSON 格式。它的核心理念是通过简单的 API 设计,使得 XML 序列化过程变得简洁,无需额外的映射文件或辅助类。 ### 1...
DWR(Direct Web Remoting)是一个JavaScript和Java之间的通信库,可以将JavaBean对象透明地转换为JSON或XML,用于AJAX交互。 4. **配置文件**:许多Java应用使用XML文件存储配置信息,JavaBean可以用来封装这些...
为了将JavaBean转换为JSON字符串,我们可以使用如Jackson、Gson或Fastjson等库。 以Jackson为例,首先确保引入Jackson库: ```xml <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-...
标题“xmljson生成实体类”指的是一个工具,它可以自动化地将XML或JSON格式的数据转换为Java实体类。这种工具通常会分析XML或JSON结构,然后自动生成对应的Java类,这些类包含了与原始数据相对应的属性和getter/...
6. **示例代码**:项目中的示例代码会涵盖各种使用场景,如简单的JavaBean到JSON的转换,复杂类型(如集合和自定义类型)的序列化,以及如何利用流式API处理大文件。通过阅读和运行这些示例,开发者可以快速掌握...
在XML到JavaBean的转换过程中,这些规范会被遵守,生成的类便于在Java应用中使用。 总结起来,这个主题涵盖了XML的结构定义、JavaBean的创建以及两者之间的转换技术,这些都是Java开发中处理XML数据时的关键知识点...
JSON(JavaScript Object Notation)和XML(eXtensible Markup Language)是两种广泛使用的数据交换格式,它们在处理网络数据传输、存储以及不同系统间的数据交互时起到关键作用。JSON以其简洁明了的结构和易读性受...
### AJAX JSON Java 用法:将 List 和 Object 转换为 Json 格式字符串 在现代 Web 开发中,Ajax(Asynchronous JavaScript and XML)技术被广泛应用于创建交互式的 Web 应用程序。其中,JSON(JavaScript Object ...
在本文中,我们将深入探讨如何使用 JSON-lib 进行 Java 对象与 JSON 和 XML 之间的转换。 1. **JSON-lib 的安装与依赖** 在使用 JSON-lib 之前,你需要从官方网址下载相应的库文件。在本文中提到的版本是 2.3,但...
在将Java对象转换为JSON时,如果对象是JavaBean,这个库可以帮助快速获取和设置属性值。 6. **xom-1.2.jar.zip**:XOM是一个XML对象模型库,主要用于XML处理。虽然主要针对XML,但有时在处理JSON数据时,可能需要与...
如果你需要在XML和JSON间来回切换,`JSONObject.fromXML()`和`JSONObject.toXML()`方法将非常有用。这使得在不同的数据交换格式之间进行数据转换变得更加方便。 在实际开发中,这个Jar包适用于Web服务、数据交换、...
例如,当我们要将一个JavaBean转换为JSON时,`commons-beanutils`可以帮助我们轻松地访问和操作JavaBean的属性,然后`json-lib`则负责实际的JSON编码工作。反过来,当我们从JSON解析数据时,`json-lib`会将JSON对象...