import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Iterator;
/*
* 将pojo对象的属性值提取出来,组成json格式的数据
* 当前版本只能对最基本的pojo对象进行转化,类似于下面的格式:
public class Pojo {
private String name;
private int age;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
}
* 单个对象返回{'name':age}格式;集合对象返回{'name':age},{'name':age}...
*
* author:scriptguy
* date: 2010/04/06
*/
public class JsonUtil {
/*
** 暴露出来的方法,传入需要将属性值转换为json数据格式的pojo
** 会抛出IllegalAccessException异常,需要捕捉
*/
public static String toJson(Object obj) throws IllegalAccessException{
Class cla = obj.getClass();
Field[] fields = cla.getDeclaredFields();
String[] names = fieldToNames(fields);
Object[] values = fieldToValues(fields,obj);
String json = produceToJson(names,values);
return json;
}
private static String[] fieldToNames(Field[] fields) {
String[] names = new String[fields.length];
for(int i = 0;i < fields.length;i++) {
fields[i].setAccessible(true);//将此对象的 accessible 标志设置为可以读取
names[i] = fields[i].getName();
}
return names;
}
private static Object[] fieldToValues(Field[] fields,Object obj) throws IllegalAccessException{
Object[] values = new Object[fields.length];
for(int i = 0;i < fields.length;i++) {
values[i] = fields[i].get(obj);
}
return values;
}
private static String produceToJson(String[] names,Object[] values) {
if(names.length != values.length) {
new RuntimeException("转化json数据出错!!!");
}
StringBuilder json = new StringBuilder();
json.append("{");
for(int i = 0;i < names.length;i++) {
json.append("'");
json.append(names[i]);
json.append("':");
processFieldValue(values[i],json);
if(i < names.length - 1) {
json.append(",");
}
}
json.append("}");
return json.toString();
}
private static void processFieldValue(Object obj,StringBuilder json) {
if(obj instanceof Number) {
json.append(obj);
} else {
json.append("'");
json.append(obj);
json.append("'");
}
}
public static String allToJson(Collection coll) throws IllegalAccessException{
Iterator iterator = coll.iterator();
StringBuilder json = new StringBuilder();
Object obj;
while(iterator.hasNext()) {
obj = iterator.next();
json.append(toJson(obj));
json.append(",");
}
int delete = json.lastIndexOf(",");
json = json.deleteCharAt(delete);
return json.toString();
}
/*
**
*/
}
测试代码
import java.util.Collection;
import java.util.*;
public class TestJsonUtil {
public static void main(String[] args) throws Exception{
Pojo pojo1 = new Pojo("list",23);
Pojo pojo = new Pojo("scriptguy",22);
List<Object> lista = new ArrayList<Object>();
lista.add(pojo1);
lista.add(pojo);
System.out.println(JsonUtil.allToJson(lista));
}
}
结果:
{'name':'list','age':23},{'name':'scriptguy','age':22}
分享到:
相关推荐
单元格的值成为对象的属性,而列名则成为属性名。 4. **序列化到JSON**:使用Java的org.json库或其他类似库(如Gson或Jackson),将这些对象转换成JSON格式的字符串。 5. **写入txt文件**:最后,JSON字符串会被写入...
"对象转换成JSON和Map"是一个核心话题,特别是在Java编程语言中,因为JSON(JavaScript Object Notation)是网络通信中广泛使用的轻量级数据交换格式,而Map则是一种通用的数据结构,用于存储键值对。下面我们将深入...
本篇将详细介绍如何在Java中使用`JsonObject`来提取JSON数据中的值,主要通过阿里巴巴的Fastjson库和Jackson库来演示。 首先,我们来看第一种格式的JSON数据: ```json [ { "success": true, "data": [ { ...
在C#编程中,处理JSON数据是常见的任务,特别是在与Web服务交互或处理API响应时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易读易写而被广泛采用。在这个场景中,我们将关注如何使用C#和...
`JsonUtil`类封装了一系列方法来处理JSON数据与Java对象之间的转换。这些方法可以简化开发者在处理JSON数据时的工作量,并提高代码的可维护性和可读性。 #### 三、关键方法详解 ##### 3.1 `getObject4JsonString...
在某些场景下,我们需要将XML数据转换为JSON格式,以便于JavaScript或其他支持JSON的语言处理。以下是对这个过程的详细解释。 XML是一种标记语言,用于描述数据结构和内容。它使用开始和结束标签(如`<tag>`和`...
在本主题中,“正则取Json数据”是指使用正则表达式从Json格式的数据中提取所需信息。Json(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于服务器与客户端之间的数据传输。 正则表达式...
本案例中的"word表格转json"是关于将Word文档中的表格数据转换为JSON(JavaScript Object Notation)格式,这是一种轻量级的数据交换格式,常用于Web服务和API之间的数据传递。而“实体类”在C#编程中指的是具有属性...
根节点对应JSON的最外层对象,子节点则成为该对象的属性,属性值可能是另一个JSON对象或数组,取决于子节点的结构。 3. **编码为JSON字符串**:将构建好的JSON对象转换为字符串,遵循JSON的语法规则。 4. **输出结果...
在实际项目中,处理大量复杂JSON数据时,可能会遇到一些挑战,如处理嵌套结构、自定义转换规则、处理null值等。这时候,可能需要使用高级特性,如Gson的`@SerializedName`注解来指定字段映射,或使用Jackson的`@...
JSON数据通常包含键值对,其中键是字符串,值可以是各种数据类型,如字符串、数字、数组、布尔值或另一个JSON对象。这种灵活性使得JSON成为传递结构化信息的理想选择。 在RPA中,我们可能会遇到需要解析JSON响应、...
在本文中,我们将深入探讨如何在C#中从XML文档中提取数据并将其转换为JSON格式,以实现“json键/值取数据Demo”。 首先,我们需要理解XML文档的结构。XML是一种用于标记数据的标记语言,其基本单位是元素,元素通过...
在本项目中,接收到的UTF-8编码数据被解析为JSON格式,以便提取和操作其中的信息。Delphi的TJSONObject、TJSONArray等类提供了便利的方法来解析和构造JSON对象,例如,可以使用TryGetValue方法获取JSON对象的值,...
在开发过程中,经常需要从复杂的对象结构中提取特定的属性值。本文将详细介绍两种常见的方法:通过`JavaScriptSerializer`和`JSON.NET`来获取对象中的属性值。 #### JavaScriptSerializer方式获取 ##### 原理介绍 ...
将JSON数据转换为Excel格式,可以帮助用户更直观地查看和管理复杂的数据结构。 标题中的"Json2ExcleTool"是一个工具,其主要功能是将JSON数据转换为Excel格式,方便用户进行数据存储和处理。这个工具的特色在于它...
在Delphi中,JSON数据通常被表示为一系列键值对,其中键是一个字符串,而值可以是任何类型的数据。为了与TDataSet建立联系,我们需要定义一个JSON结构,该结构包含字段信息以及数据本身。字段信息部分应该提供每个...
例如,HTML中的表格可以映射为JSON的数组,每个表格行成为一个对象,表格列的值则作为对象的属性。这种方式使得数据更容易被程序读取,从而实现自动化处理。 "html2json说明.docx"文档提供了关于如何进行这种转换的...
总之,SQL Server的JSON功能提供了从JSON数据中提取信息、修改JSON内容以及将数据库查询结果转化为JSON的全面支持,极大地增强了SQL Server在现代Web应用程序中的适应性和灵活性。了解并熟练掌握这些函数,对于处理...
使用yyJson,你可以通过调用`yyJson::解析JSON`来解析JSON文本,再通过`yyJson::获取值`等方法来获取JSON对象的属性值。yyJson模块通常提供了丰富的错误处理机制,使你在处理可能存在的错误时更加方便。 3. 精易...