JSONArray与JSONObject

这篇具有很好参考价值的文章主要介绍了JSONArray与JSONObject。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 需求

最近有个需求: 要接收某个接口的 JSON 数据,而这个JSON数据有可能是一个 JSON 对象,也有可能是一个 JSON数组。

"{'name','王五','age':10}"

"[{'name':'张三','age':12},{'name':'李四','age':11}]"

现在呢,我需要根据传递过来的 JSON 数据进行判断,如果是对象就调用 resolve1(),如果是数组就调用 resolve2()。

依赖:

  • 本文采用 fastjson 来处理 JSON 数据

            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.83</version>
            </dependency>
    
  • 因为要处理 JSON 数组,所以要使用 JSONArray.parseArray

2. 测试

首先呢,要判断 JSON 数据是否是一个数组,那么我首先想到的是,我用 JSONArray.parseArray 会不会出现异常,如果出现了异常,那我 try-catch 一下,不是很简单就能实现了吗。

测试代码:

/**
 * @author chenjy
 * @description:
 * @date 2023/1/11
 */
public class JSONTest {
    public static void main(String[] args) {
        String jsonArr = "[{'name':'张三','age':12},{'name':'李四','age':11}]";
        String jsonObj = "{'name':'王五','age':10}";
        JSONArray jsonArray = JSONArray.parseArray(jsonArr);
        System.out.println(jsonArray);
        JSONArray jsonObject = JSONArray.parseArray(jsonObj);
        System.out.println(jsonObject);
    }
}

控制台输出:
JSONArray与JSONObject

很显然,JSONArray.parseArray 转换 JSON 对象 的时候会抛出异常 com.alibaba.fastjson.JSONException,那么我们实现需求的思路就变得简单起来了。


兴趣使然,我再来看一下 JSONObject.parseObject 能不能转换 JSON 数组。

测试代码:

/**
 * @author chenjy
 * @description:
 * @date 2023/1/11
 */
public class JSONTest {
    public static void main(String[] args) {
        String jsonArr = "[{'name':'张三','age':12},{'name':'李四','age':11}]";
        String jsonObj = "{'name':'王五','age':10}";
        JSONObject jsonObject = JSONObject.parseObject(jsonObj);
        System.out.println(jsonObject);
        JSONObject jsonArray = JSONObject.parseObject(jsonArr);
        System.out.println(jsonArray);
    }
}

控制台输出:
JSONArray与JSONObject

果然,也会抛出异常 com.alibaba.fastjson.JSONException

3. 实现需求

好的,经过上面的测试,我们的需求实现思路:在 try 中调用 resolve2,在 catch 中调用 resolve1

/**
 * @author chenjy
 * @description:
 * @date 2023/1/11
 */
public class JSONTest {
    public static void main(String[] args) {
        String jsonArr = "[{'name':'张三','age':12},{'name':'李四','age':11}]";
        String jsonObj = "{'name':'王五','age':10}";

        System.out.println("======测试 JSON 数组======");
        getParam(jsonArr);

        System.out.println("======测试 JSON 对象======");
        getParam(jsonObj);
    }

    public static void getParam(String str) {
        try {
            JSONArray jsonArray = JSONArray.parseArray(str);
            resolve2(jsonArray);
        } catch (JSONException e) {
            JSONObject jsonObject = JSONObject.parseObject(str);
            resolve1(jsonObject);
        }
    }

    /*
        处理对象
     */
    public static void resolve1(JSONObject obj) {
        System.out.println("姓名:" + obj.getString("name") + "年龄:" + obj.get("age"));
    }

    /*
        处理数组
     */
    public static void resolve2(JSONArray array) {
        for (Object obj : array) {
            JSONObject jObj = (JSONObject) JSON.toJSON(obj);
            System.out.println("姓名:" + jObj.getString("name") + "年龄:" + jObj.get("age"));
        }
    }
}
JSONArray与JSONObject

4. 相关操作

1. 将JSONObject装入JSONArray

我来形象地说明一下两者的关系

  • JSONObject 就相当于一个 Map,往 JSONObject 中新增键值对的方法: put(key, value),删除键值对的方法:remove(key)
  • JSONArray 相当于一个 List<Map>,往 JSONObject 中新增元素的方法: add(JSONObject),删除键值对的方法:remove(object)

2. JSONArray与String的相互转换

  • StringJSONArrayJSONArray.parseArray(String str)
  • JSONArrayStringjsonArray.toString()jsonArray.toJSONString()String.valueOf(jsonArray)

顺便说一下 JSONObjectString 之间的相互转换文章来源地址https://www.toymoban.com/news/detail-454012.html

  • StringJSONObjectJSONObject.parseObject(String str)
  • JSONObjectStringjsonObject.toJSONString()jsonObject.toString()String.valueOf(jsonObject)
        String jsonArr = "[{'name':'张三','age':12},{'name':'李四','age':11}]";
        String jsonObj = "{'name':'王五','age':10}";
        JSONArray jsonArray = JSONArray.parseArray(jsonArr);
        System.out.println(
                jsonArray.toJSONString() instanceof String
                && jsonArray.toString() instanceof String
                && String.valueOf(jsonArray) instanceof String
        );
        JSONObject jsonObject = JSONObject.parseObject(jsonObj);
        System.out.println(
                jsonObject.toJSONString() instanceof String
                && jsonObject.toString() instanceof String
                && String.valueOf(jsonObject) instanceof String
        );

3. 注意:toString与JSONObject.toJSONString的区别

public class JSONTest {
    public static void main(String[] args) {
        Tom tom = new Tom("张三", 18);
        System.out.println(tom.toString());
        JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(tom));
        System.out.println(jsonObject);
        jsonObject.put("sex", 1);
        System.out.println(jsonObject.toJSONString());
    }
}

@Data
@AllArgsConstructor
class Tom {
    String name;
    Integer age;
}
JSONArray与JSONObject

到了这里,关于JSONArray与JSONObject的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用JSONObject与JSONArray进行解析json数据

    JSONObject: JSONObject只是一种数据结构,可以理解为JSON格式的数据结构(key-value 结构),可以使用put方法给json对象添加元素。JSONObject可以很方便的转换成字符串,也可以很方便的把其他对象转换成JSONObject对象。 JSONArray: JSONArray是一个有序的值序列。它的外部文本形式是一个用

    2024年02月03日
    浏览(28)
  • 一文让你熟练使用 JSONObject 和 JSONArray

    导入阿里的 fastjson 依赖。 通过 JSONObject.parseObject(String str) 将字符串转换为 JSONObject 对象,此方法支持 JSON 字符串,JSON 字符串格式如下: 写法一: 写法二: 转换案例代码: 输出: 如果是 JSONArray 类型的字符串,如下: 则需要用 JSONArray.parseArray() 将 JSON 转换为 String,使用

    2023年04月24日
    浏览(25)
  • JSON转换:实体类和JSONObject互转,List和JSONArray互转(fastjson版)

         //1.java对象转化成String      String s=JSONObject.toJSONString(javaObject.class);       //2. java对象转化成Object         Object str=JSONObject.toJSON(javaObject.class);       //3.String类型转json对象        JSONObject jsonObject= JSONObject.parseObject(str);       //4. String转Object         Obj

    2024年02月14日
    浏览(34)
  • Java-json相关转换,JSONObject与实体类/map互转、List/List<map>和JSONArray互转、获取JSONObject中的key value、字符串String转换等

    博客背景是Java开发。json相关的转换、取值等在日常开发中经常使用,但有时候还是会忘记or遇到些奇奇怪怪的问题。以此记录,提醒自己~不定期更新~ 实体类和JSONObject互转 Map和JSONObject互转 String转JSONObject 实体类转JSON字符串时不过滤NULL空值 获取JSONObject中的key value List和

    2024年02月12日
    浏览(46)
  • SpringCloudStreamkafka接收jsonarray字符串失败

    kafka作为消息队列,作为前端设备数据到后端消费的渠道,也被多个不同微服务消费 一个服务与前端边缘计算设备建立socket消息,接收实时交通事件推送,再将事件发送到kafka里面。此处使用的是Spring Kafka,普通的将事件列表数据转化为字符串后发送 事件信息,需要入库和实

    2024年02月07日
    浏览(30)
  • c#[WebMethod]方法接收前端传入的JsonArray的方法

    一、第一种方法:可以这样接收前端传入的jsonArray字符串到一个类的数组中,然后遍历该数组取值 这种方法需要创建PointConfig类 二、第二种方法:可以这样接收前端传入的jsonArray字符串到一个类的数组中,然后遍历该数组取值 秋风写于淄博,业务咨询与技术交流:Q375172665

    2024年02月15日
    浏览(28)
  • 【Java】JSONArray详解

    JSONArray是JSON数据格式中的一种数据结构,主要用于存储和操作有序的元素集合。本文将对JSONArray进行详细介绍,包括其定义、使用方法和实际应用场景。 JSONArray是一种有序的元素集合,可以包含任意类型的数据,如字符串、数字、布尔值、null、数组或另一个JSON对象。JSONA

    2024年02月07日
    浏览(27)
  • jsonobject转list(jsonobject转list集合)

    您好,这个应该是可以的!   get(“two”); System。out。println(“two = ” + n); 由于作为key的对象将通过计算其散列函数来确定与之对应的value的位置,因此任何作为key的对象都必须实现hashCode和equals方法。hashCode和equals方法继承自根类Object,如果你用自定义的类当作key的话,要相

    2023年04月08日
    浏览(25)
  • Java Maven 构建项目里面有个聚合的概念

    Java 项目里面有个聚合的概念,它没有.net里面解决方案(solution)的能力,可以统一的编译项目下的所有包,或设置统一的打包路径,使用maven编译后的产物也不会像.net那样编译到当前项目的bin文件夹下面,而是统一的生成到配置好的 settings.xml 文件的 localRepository 配置节下的路

    2024年02月14日
    浏览(25)
  • Java中JSONArray转换List的方法

    JSONArray字符串 转 List 输出结果: [a, b, c] JSONArray对象 转 List实体类对象 Body.class代码: 输出结果: [{“name”:“zhangsan”,“age”:18},{“name”:“lisi”,“age”:23}] [Body{name=‘zhangsan’, age=18}, Body{name=‘lisi’, age=23}] List转JSONArray

    2024年02月14日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包