JSONObject();
时间: 2025-05-28 07:52:19 浏览: 5
### 正确使用 `JSONObject` 的方法
#### 1. 创建 `JSONObject`
可以通过多种方式创建 `JSONObject` 对象。以下是常见的几种方法:
- **空对象**
使用默认构造函数创建一个空的 `JSONObject` 实例。
```java
JSONObject jsonObject = new JSONObject();
```
- **快速构建模式**
利用链式调用的方式向 `JSONObject` 中添加键值对。
```java
JSONObject product = new JSONObject()
.put("id", 1001)
.put("name", "无线鼠标")
.put("price", 89.9);
```
- **通过 `Map` 转换**
将现有的 `Map<String, Object>` 转换为 `JSONObject`。
```java
Map<String, Object> data = new HashMap<>();
data.put("department", "研发部");
JSONObject deptObj = new JSONObject(data);
```
以上三种方式均可以用来初始化 `JSONObject`[^1]。
---
#### 2. 解析复杂 JSON 数据结构
当处理嵌套的 JSON 结构时,通常需要结合 `JSONObject` 和 `JSONArray` 来完成数据提取。以下是一个典型的模板示例:
```java
// 假设 result 是服务器返回的 JSON 字符串
JSONObject result = JSONObject.parseObject(result);
if (Integer.parseInt(String.valueOf(result.get("code"))) == 0) {
// 获取顶层 key "data"
JSONObject abData = result.getJSONObject("data");
// 提取数组部分
JSONArray tmp = JSONArray.parseArray(String.valueOf(abData.get("results")));
for (int i = 0; i < tmp.size(); i++) {
JSONObject tmpResult = tmp.getJSONObject(i);
JSONObject tmpValue = tmpResult.getJSONObject("value");
if (tmpValue.containsKey("params")) {
JSONObject tmpParams = tmpValue.getJSONObject("params");
if (Integer.parseInt(String.valueOf(tmpParams.get("panduan"))) >= 14) {
int panduan = Integer.parseInt(String.valueOf(tmpParams.get("panduan")));
String shuju1 = String.valueOf(tmpParams.get("shuju1"));
String shuju2 = String.valueOf(tmpParams.get("shuju2"));
System.out.println("Panduan: " + panduan);
System.out.println("Shuju1: " + shuju1);
System.out.println("Shuju2: " + shuju2);
}
}
}
}
```
此代码片段展示了如何逐步解析嵌套的 JSON 数据并访问其中的具体字段[^2]。
---
#### 3. 时间格式化问题
在某些场景下,使用 `JSONObject.parseObject` 方法可能会导致日期类型的字段被错误地转换为时间戳。为了避免这种情况,可以采用自定义的时间格式化工具来解决问题。
例如:
```java
public static Map<String, Object> beanToMap(Object object) {
return JSONObject.parseObject(
JSON.toJSONStringWithDateFormat(object, "yyyy-MM-dd HH:mm:ss"),
Map.class
);
}
```
这段代码利用了 `JSON.toJSONStringWithDateFormat` 方法指定日期格式,从而避免了时间戳的问题[^3]。
---
#### 4. Maven 配置与依赖管理
如果在项目中使用 `JSONObject` 报错,则可能是由于缺少必要的 jar 包所致。对于传统的 Java 项目,可能需要手动引入多个 jar 文件;但在 Maven 项目中,只需简单声明依赖即可。
Maven 依赖配置如下:
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
```
注意:FastJson 库提供了完整的 `JSONObject` 功能支持,因此推荐优先考虑 FastJson 作为实现库之一[^4]。
---
###
阅读全文
相关推荐









