当前位置: 首页 > news >正文

网站设计科技有限公司公司起名打分最准的免费网站

网站设计科技有限公司,公司起名打分最准的免费网站,个人电子邮箱怎么注册,微信公众号和微网站目录 1. 需求2. 测试3. 实现需求4. 相关操作1. 将JSONObject装入JSONArray2. JSONArray与String的相互转换3. 注意:toString与JSONObject.toJSONString的区别 1. 需求 最近有个需求: 要接收某个接口的 JSON 数据,而这个JSON数据有可能是一个…

目录

  • 1. 需求
  • 2. 测试
  • 3. 实现需求
  • 4. 相关操作
    • 1. 将JSONObject装入JSONArray
    • 2. JSONArray与String的相互转换
    • 3. 注意:toString与JSONObject.toJSONString的区别

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.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);}
}

控制台输出:

果然,也会抛出异常 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"));}}
}

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 之间的相互转换

  • 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;
}
http://www.bjxfkj.com.cn/article/110076.html

相关文章:

  • 如何做导购网站简单网站开发
  • 住房与建设注册中心网站电商网站建设期末考试
  • 网站推广平台代理做付费推广哪个网站好
  • 个人域名 做公司网站专业网站制作公司名称
  • 网站留言模板网站建设方案书 下载
  • 如何做专业网站的线下推广音乐网站怎么做精准关键词
  • 扬州做网站谷歌广告优化
  • 网站开发工期安排衡水企业网站制作报价
  • 叫别人做网站需要注意什么问题网站建设营销解决方案
  • 中山企业网站建设方案谷歌seo服务公司
  • 可信网站认证有什么用外国网站代理
  • 网站怎样做的南京工商注册核名查询系统
  • 做么自己做一个网站网站开发需要哪些硬件
  • 用html做的美食网站深圳网站制作必选祥奔科技
  • 网站运营与管理实验报告化妆品 东莞网站建设
  • 网站开发自学网国外外贸网站有哪些
  • vs做asp网站云南互联网公司
  • 网站做编辑湖州网站建设培训
  • 大连企业公司网站建设天津模板做网站
  • 宝安网站建设公司968软件平台架构
  • 北京网站制作网站黄页污水
  • 网站建设招聘条件哈尔滨网页制作公司电话
  • 网站维护知识中英文微信网站建设
  • 私人设计网站推荐珠海高端网站建设
  • 做系统去哪个网站好个人网站首页设计
  • 做网站被捉东莞seo优化联系电话
  • 网站做宣传域名什么好社交网站开发教程
  • 做网站在什么地方发帖子呢企业信息查询表去哪里查
  • 网站后台图片传不上去怎么办苏州外贸营销网站建设
  • 建立个人网站要钱吗.net开发手机网站