import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 序列化对象为JSON格式 遵循JSON组织公布标准
*
* @date 2008/05/07
* @version 1.0.0
*/
public class Json {
/**
* @param obj 任意对象
* @return String
*/
public static String object2json(Object obj) {
StringBuilder json = new StringBuilder();
if (obj == null) {
json.append("\"\"");
} else if (obj instanceof String || obj instanceof Integer || obj instanceof Float || obj instanceof Boolean
|| obj instanceof Short || obj instanceof Double || obj instanceof Long || obj instanceof BigDecimal
|| obj instanceof BigInteger || obj instanceof Byte || obj instanceof java.util.Date) {
json.append("\"").append(string2json(obj.toString())).append("\"");
} else if (obj instanceof Object[]) {
json.append(array2json((Object[]) obj));
} else if (obj instanceof List) {
json.append(list2json((List) obj));
} else if (obj instanceof Map) {
json.append(map2json((Map)obj));
} else if (obj instanceof Set) {
json.append(set2json((Set) obj));
} else {
json.append(bean2json(obj));
}
return json.toString();
}
/**
* @param bean bean对象
* @return String
*/
public static String bean2json(Object bean) {
StringBuilder json = new StringBuilder();
json.append("{");
PropertyDescriptor[] props = null;
try {
props = Introspector.getBeanInfo(bean.getClass(), Object.class).getPropertyDescriptors();
} catch (IntrospectionException e) {
}
if (props != null) {
for (int i = 0; i < props.length; i++) {
try {
String name = object2json(props[i].getName());
String value = object2json(props[i].getReadMethod().invoke(bean));
json.append(name);
json.append(":");
json.append(value);
json.append(",");
} catch (Exception e) {
}
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
/**
* @param list list对象
* @return String
*/
public static String list2json(List list) {
StringBuilder json = new StringBuilder();
json.append("[");
if (list != null && list.size() > 0) {
for (Object obj : list) {
json.append(object2json(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
/**
* @param array 对象数组
* @return String
*/
public static String array2json(Object[] array) {
StringBuilder json = new StringBuilder();
json.append("[");
if (array != null && array.length > 0) {
for (Object obj : array) {
json.append(object2json(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
/**
* @param map map对象
* @return String
*/
public static String map2json(Map map) {
StringBuilder json = new StringBuilder();
json.append("{");
if (map != null && map.size() > 0) {
for (Object key : map.keySet()) {
json.append(object2json(key));
json.append(":");
json.append(object2json(map.get(key)));
json.append(",");
}
json.setCharAt(json.length() - 1, '}');
} else {
json.append("}");
}
return json.toString();
}
/**
* @param set 集合对象
* @return String
*/
public static String set2json(Set set) {
StringBuilder json = new StringBuilder();
json.append("[");
if (set != null && set.size() > 0) {
for (Object obj : set) {
json.append(object2json(obj));
json.append(",");
}
json.setCharAt(json.length() - 1, ']');
} else {
json.append("]");
}
return json.toString();
}
/**
* @param s 参数
* @return String
*/
public static String string2json(String s) {
if (s == null)
return "";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
switch (ch) {
case '"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
case '/':
sb.append("\\/");
break;
default:
if (ch >= '\u0000' && ch <= '\u001F') {
String ss = Integer.toHexString(ch);
sb.append("\\u");
for (int k = 0; k < 4 - ss.length(); k++) {
sb.append('0');
}
sb.append(ss.toUpperCase());
} else {
sb.append(ch);
}
}
}
return sb.toString();
}
}
分享到:
相关推荐
1. **将Java对象转成JSON串** 当我们有一个Java对象,例如一个User类,包含name和age属性,我们可以直接使用Fastjson将其转换为JSON字符串。首先,确保你的项目中已经引入了Fastjson的依赖。然后,可以使用`JSON....
它可以方便地将一种类型的数据转换成另一种类型,比如将字符串转成整数,日期转成字符串等,这对于JSON数据处理的灵活性至关重要。 `JsonUtil.java`看起来是一个自定义的工具类,很可能包含了对`json-lib`和`...
在Java开发中,将Java对象转换为JSON字符串或字符串数组是一项常见的任务,特别是在与前端交互、数据存储或者网络传输时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...
使用Java操作JSON字符串对象,使用Java操作JSON字符串对象
在Java开发中,将对象转换成JSON串是一个常见的需求,尤其在进行Web开发或者进行前后端数据交换的时候。在本文中,我们将探讨几种在Java中将对象或数据结构转换为JSON串的方法,这对于开发者来说是一个必须掌握的...
FastJSON不仅支持将Java对象转换为JSON字符串,还能将JSON字符串反序列化为Java对象,极大地简化了Java与JSON之间的交互。在许多互联网应用中,FastJSON因其高效和简洁的API而被广泛使用。 在提供的代码示例中,...
自己有空时用java反射写的json转化工具,有不完善之处,多包涵
本文将详细介绍如何将JSON字符串直接转换为Java对象,特别是涉及到多层List集合的情况。在本例中,我们将使用`net.sf.json.JSONObject`类来实现这一功能。 首先,确保你的项目中已经引入了必要的库。在使用`...
标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...
java判断字符串是否是json或json数组; 简单小方法,很实用;简单实用的方法;亲测可用;嗯嗯嗯呃呃呃呃呃呃呃
Java解析Json字符串是Java开发中常见的一项任务,特别是在与Web服务交互、数据交换或存储时。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Java...
以下是一些关于Java转JSON的常用库及其用法的详细说明: 1. **Jackson库** Jackson是Java中最流行的JSON处理库之一,由 FasterXML 维护。它提供了一组API,包括`com.fasterxml.jackson.databind.ObjectMapper`,...
Java Bean转换为Json Schema是一种常见的数据转换操作,特别是在开发基于RESTful API的Web服务时,因为JSON Schema提供了数据验证和文档化的功能。Java Bean是Java编程中的一个概念,它是一类具有特定规则的POJO...
JSON官网上推荐的使用java解析json的类库,官网下载后的是未编译打包的java文件,这是我打包后的东东,使用时直接添加进Build path即可,简单实用……
在给定的“利用java反射将json字符串转成对象”的主题中,我们将深入探讨如何借助反射机制将JSON字符串转换为Java对象。 首先,我们需要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人...
1. **Gson库**:Google开发的Gson库是Java中非常流行的一个JSON库,它能够将Java对象转化为JSON字符串,同时也能够将JSON字符串反序列化为Java对象。例如,我们可以通过`Gson().toJson()`方法将一个Java对象转化为...
在Java中,我们经常需要将JSON字符串与Java对象进行相互转换,以便于数据的传输和处理。本篇文章将详细探讨这个过程,以及如何使用常见的Java JSON库,如Gson和Jackson,进行JSON与Java对象的转换。 首先,让我们...
总的来说,Java中将二维数组转换为JSON的方式有多种,包括手动构建字符串和使用JSON库。手动构建适合简单的场景,而使用JSON库则更适用于复杂的应用。在选择方法时,应考虑项目的规模、可维护性和性能等因素。同时,...
在这个“java转json测试项目”中,我们主要关注的是如何将Java对象转换为JSON格式,以及使用两种不同的JSON库——阿里巴巴的FastJSON和开源的json-lib(通过其子包net.sf.json.JSONObject)进行操作。 首先,...
在Java编程中,验证字符串是否符合JSON(JavaScript Object Notation)格式是一项常见的任务,尤其是在进行前后端数据交互时。JSON是一种轻量级的数据交换格式,它允许数据以键值对的形式存储,易于人阅读和编写,...