JSON与Object等的相互转换

JSON与Object的转换

java 复制代码
// 将 Object 对象转换为 String 类型
String jsonString = JSON.toJSONString(body);

// 将 String 或 byte[] 转换为 JSONObject 类型
JSONObject jsonObject = JSONObject.parseObject(jsonString);
// 根据键key获取 JSONObject 中的某一个键值对的值
String keyValue = jsonObject.getString("key");

// 将 String 或 byte[] 转换为 Object 类型
Object object = JSONObject.parse(jsonString);

JSON数组字符串类型转换为JSON数组

使用org.json.JSONArray

java 复制代码
import org.json.JSONArray;
import org.json.JSONObject;
java 复制代码
// 提供的JSON数组字符串         
String jsonArrayString = "[{ \"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"},{ \"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"},{ \"key1\": \"value1\", \"key2\": \"value2\", \"key3\": \"value3\"}]";

// 将JSON数组字符串解析为JSONArray对象
JSONArray array = new JSONArray(jsonArrayString);

// 遍历JSON数组
for (int i = 0; i < array.length(); i++) {
	// 获取数组中的JSONObject
	JSONObject jsonObject = array.getJSONObject(i);

	// 获取JSONObject中的属性值
	String value1 = jsonObject.getString("key1");
	String value3 = jsonObject.getLong("key3");
	// 打印属性值或进行其他操作
	System.out.println("Key1: " + value1);
	System.out.println("Key3: " + value3);
	System.out.println(jsonObject);
} 

输出每个jsonObject:

bash 复制代码
{"key1":"value1","key2":"value2","key3":"value3"} 
{"key1":"value1","key2":"value2","key3":"value3"}
{"key1":"value1","key2":"value2","key3":"value3"}

使用cn.hutool.json.JSONArray

java 复制代码
import cn.hutool.json.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;  
java 复制代码
JSONArray array = new JSONArray(jsonArrayString); 
for (Object item : array) {     
	// 根据键得到值    
	String value1 = JSONObject.parseObject(JSON.toJSONString(item)).getString("key1");
	System.out.println(item);
} 
bash 复制代码
{"key1":"value1","key2":"value2","key3":"value3"} {"key1":"value1","key2":"value2","key3":"value3"} {"key1":"value1","key2":"value2","key3":"value3"}

以上两种方法引用了不同的JSONArray包。

相关推荐
北漂IT民工_程序员_ZG18 分钟前
SpringBean生命周期,动态代理
java·spring boot·spring
老华带你飞39 分钟前
建筑材料管理|基于springboot 建筑材料管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·spring
木心爱编程1 小时前
【Qt 5.14.2 新手实战】QTC++入门筑基——按钮与标签联动:QPushButton + QLabel 实现图片切换器
java·c++·qt
椰羊~王小美1 小时前
setScale没传roudingmode,为什么会报错
java
WizLC1 小时前
【JAVA】JVM类加载器知识笔记
java·jvm·笔记
喝汽水的猫^1 小时前
Java实现Excel 导出(多 Sheet、复杂格式)
java·excel
毕设源码-朱学姐2 小时前
【开题答辩全过程】以 基于JavaWeb的疾病查询系统的设计与实现为例,包含答辩的问题和答案
java·eclipse
雨中飘荡的记忆2 小时前
Java面向对象编程详解
java·开发语言
zhangyifang_0092 小时前
Spring中的BeanFactory类
java·后端·spring
大学生资源网2 小时前
java毕业设计之面向校园的助力跑腿系统设计与实现源码(源码+文档+数据库)
java·数据库·mysql·毕业设计·源码·springboot