fastJson中java对象 jsonObject jsonArray之间转换

          fastJson中java对象 jsonObject jsonArray之间转换

一、介绍

简介:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式

二、使用

1、java对象转jsonObject

User u = new User();
u.setName("yinyuy");
JSONObject json = (JSONObject) JSONObject.toJSON(u);

2、jsonArray添加jsonObject

User u = new User();
u.setName("yinyuy");
JSONArray jsonArray = new JSONArray();
JSONObject json = (JSONObject) JSONObject.toJSON(u);
jsonArray.add(json);

3、jsonObject、jsonArray转String

// json jsonArray依赖于上面
String answer = json.toString();
String answers = jsonArray.toString();

// 保存该对象的json String时,在数据库会自动生成key:value格式
jsonObject类型
{"answer":{"error":[2],"right":""},"id":1}
jsonArray类型 应用广泛
[{"answer":{"error":[2],"right":[1,3,4]},"id":41},{"answer":{"error":[2],"right":[1]},"id":42}]

4、解析jsonArray为java对象集合

数据库json格式(是以String来进行存储的)

public class AnswerSheet{
    private String id;
    private Map<String,Object> answer;
}

List<AnswerSheet> listAnswerJson = JSONArray.parseArray(userAnswerSheetJsonArr.toString(),AnswerSheet.class);

// 如果不通过对象进行解析获取数组中对象,也可通过循环方式来进行获取
JSONArray.size() 大小
JSONArray.get(intVal) 获取值通过jsonObject进行接受然后再转

注意事项:json中的字段java对象必须全部对应并且数据类型相同

推荐博客:https://blog.csdn.net/tangerr/article/details/76217924

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以参考以下代码实现: ```java import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class JSONUtils { public static void convertNestedJSONObject(JSONObject jsonObject) { for (String key : jsonObject.keySet()) { Object value = jsonObject.get(key); if (value instanceof JSONObject) { JSONArray nestedArray = new JSONArray(); nestedArray.add(value); jsonObject.put(key, nestedArray); convertNestedJSONObject((JSONObject) value); } else if (value instanceof JSONArray) { convertNestedJSONObject((JSONArray) value); } } } public static void convertNestedJSONObject(JSONArray jsonArray) { for (int i = 0; i < jsonArray.size(); i++) { Object item = jsonArray.get(i); if (item instanceof JSONObject) { JSONArray nestedArray = new JSONArray(); nestedArray.add(item); jsonArray.set(i, nestedArray); convertNestedJSONObject((JSONObject) item); } else if (item instanceof JSONArray) { convertNestedJSONObject((JSONArray) item); } } } } ``` 这个工具类包含了两个方法,分别用于处理 `com.alibaba.fastjson.JSONObject` 和 `com.alibaba.fastjson.JSONArray` 对象。对于 `JSONObject`,我们遍历其的每个键值对,如果值是 `JSONObject` 对象,就将其包装成一个嵌套的 `JSONArray` 对象,并递归地调用自身处理嵌套的情况。对于 `JSONArray`,我们遍历其的每个元素,如果元素是 `JSONObject` 对象,就将其包装成一个嵌套的 `JSONArray` 对象,并递归地调用自身处理嵌套的情况。需要注意的是,在处理 `JSONObject` 的时候,需要使用 `put` 方法替换原有键值对,而在处理 `JSONArray` 的时候,需要使用 `set` 方法替换原有元素。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值