关于JSON的Java类库挺多的,但有时候不希望在项目里边引入这些JAR包,所以需要自己实现一些简单的工具类。本例就属于这种情况。本例中使用Java的反射机制,将简单的POJO对象转换成JSON字符串。
/**
* 将字符串首字母大写
* @param str
* @return
*/
private static String transform(String str) {
if (str == null || str.length() < 1) {
return "";
}
return str.substring(0, 1).toUpperCase() + str.substring(1);
}
/**
* 将POJO对象转换成JSON格式的字符串
* @param obj
* @return
*/
public static String pojo2Json(Object obj) {
if (obj == null) {
return "";
}
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
StringBuilder buff = new StringBuilder();
buff.append("{");
for (Field f : fields) {
try {
String methodName = "get" + transform(f.getName());
Object value=clazz.getDeclaredMethod(methodName).invoke(obj, null);
buff.append("\"");
buff.append(f.getName());
buff.append("\":");
if(value==null){
buff.append("\"\",");
continue;
}
if(value instanceof Boolean){
buff.append((Boolean)value);
buff.append(",");
}else if(value instanceof Number){
buff.append((Number)value);
buff.append(",");
}else if(value instanceof Date){
buff.append("\"");
buff.append(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format((Date)value));
buff.append("\",");
}else{
buff.append("\"");
buff.append(value.toString());
buff.append("\",");
}
} catch (SecurityException e) {
//e.printStackTrace();
} catch (NoSuchMethodException e) {
//e.printStackTrace();
} catch (IllegalArgumentException e) {
//e.printStackTrace();
} catch (IllegalAccessException e) {
//e.printStackTrace();
} catch (InvocationTargetException e) {
//e.printStackTrace();
}
}
if (buff.length() > 1) {
buff = buff.deleteCharAt(buff.length() - 1);
}
buff.append("}");
return buff.toString();
}
分享到:
相关推荐
本文将深入探讨如何模仿JSON,根据对象生成JSON字符串,以及如何根据JSON字符串反向生成对象。 首先,我们要理解JSON的基本结构。一个JSON对象以大括号`{}`包围,其内部由键值对组成,键用双引号`""`包裹,值可以是...
C++作为一款强大的系统编程语言,虽然原生并不支持JSON解析,但有多种库可以用来处理JSON字符串。本主题将深入探讨如何在C++中解析JSON字符串,主要涉及以下几个知识点: 1. **JSON基本结构**:JSON数据由键值对...
本篇文章将深入探讨如何将JSON字符串转换为C++类对象,以实现数据的有效操作和管理。 首先,我们需要一个库来解析JSON字符串。在C++中,有许多流行的JSON库可供选择,例如nlohmann/json、jsoncpp、RapidJSON等。...
要将JSON字符串转化为结构体,首先需要对JSON字符串进行解析,获取其中的键值对。`cjson`库提供了` cJSON_Parse()`函数,用于解析JSON字符串并返回一个`cJSON`对象。这个对象代表了JSON数据的树形结构,可以通过遍历...
本篇文章将深入探讨如何在C++中读取并解析JSON字符串内容。 首先,你需要一个C++库来帮助解析JSON。虽然C++标准库并不直接支持JSON,但有许多第三方库可供选择,如 RapidJSON、nlohmann/json 和 Jsoncpp。这里我们...
反之,将结构体转化为JSON字符串则是将结构体中的数据转换为JSON格式的文本,便于在网络间传递或存储。 关于“反射”这一概念,在许多面向对象的语言中,反射允许程序在运行时检查和修改其自身的结构和行为。在...
这类工具可以帮助开发者将原始的、紧凑的JSON字符串转换成可读性更强的格式,通过增加缩进和换行来清晰地展示数据结构,便于理解和调试。 描述中提到的“Json字符串格式化工具”同样强调了这一点。在实际开发中,...
1. **解析阶段**:将JSON字符串转换为抽象语法树(AST),如果字符串中包含非法字符、键值对格式不正确、缺少逗号或冒号、括号不匹配等问题,解析器会在这一步捕获错误。 2. **验证阶段**:检查生成的AST是否符合...
它提供了一个简单易用的API,可以方便地将JSON字符串转化为C结构体,以及将C结构体转化为JSON字符串。然而,原生的CJSON并不直接支持Unicode,尤其是宽字符的处理,这在处理包含多语言字符的JSON数据时可能会遇到...
### C#通过POST提交JSON字符串知识点详解 #### 一、知识点概述 在现代Web开发中,前后端分离架构越来越流行,后端主要负责处理业务逻辑和数据存储,前端则负责展示逻辑。在这种模式下,前后端之间的数据交换通常...
在.NET框架中,尤其是在MVC(Model-View-Controller)架构中,它是一个不可或缺的工具,用于序列化和反序列化JSON对象,将C#对象转换为JSON字符串,以及将JSON字符串解析回C#对象。 在C# MVC项目中,JSON处理通常...
通过示例代码,我们学习了如何解析JSON字符串、提取简单的键值对以及访问嵌套对象中的数据。掌握这些技能对于处理Web服务返回的数据或其他涉及JSON格式的应用场景非常重要。希望本文能够帮助您更好地理解和运用C#中...
这样,当`Address`对象在转换过程中遇到时,会使用我们自定义的转换函数,生成符合需求的JSON字符串。 测试这部分功能,你可以编写一个`TestJsonLib`测试类,包含一个测试方法,模拟上述代码的执行流程,确保自定义...
该生成器的目标是简化开发人员的工作,自动将C#对象转换为Json字符串,或者将Json文本反序列化为C#对象。这在构建API接口、Web应用或任何需要传递结构化数据的项目时尤其有用。 JsonC#生成器的核心功能可能包括以下...
JSON实体类生成器的工作就是根据JSON字符串或JSON文件,自动生成与之匹配的实体类代码。这些实体类可以直接在代码中使用,简化了从JSON数据到程序对象的转换过程。 3. 关键组件: - `JsonToEntity.exe.config`:这...
在Java开发中,数据交换和存储经常涉及到对象与JSON字符串之间的转换。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Java提供了多种库来实现对象与...
cJSON是一个小巧高效的JSON解析器,它提供了解析JSON字符串、生成JSON格式数据的功能。本文将详细介绍如何利用cJSON库进行简单和复杂JSON字符串的解析和构建。 首先,你需要在项目中引入cJSON库。如果你是从源码...
这将生成`"{ "name": "John", "age": 30, "city": "New York" }"`这样的JSON字符串。 2. `JSON.parse()`: 相反,这个方法用于将JSON字符串解析为JavaScript对象。例如: ```javascript let jsonString = '{"name":...
3. JsonView.exe:这是JSON查看器的可执行文件,用户可以直接运行此程序来查看和编辑JSON字符串。通过这个工具,用户可以方便地查看JSON数据,检查其格式是否正确,也可以进行简单的编辑操作,如添加、删除或修改...
`cJSON`是一个C语言实现的轻量级JSON解析器和生成器,它允许程序高效地解析JSON数据并创建相应的C结构体表示,同时也可以将这些结构体转换回JSON字符串。`cJSON`库小巧、易于集成,并且具有良好的跨平台性。 在处理...