当前位置: 首页 > 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.15wanjia.com/news/177223.html

相关文章:

  • 南充网站建设略奥网络wordpress 侧边栏 固定
  • 泉州哪家网站建设公司好专业的广州手机网站建设
  • 设计网站建设的合同书天津网站优化首页
  • 专业建设金融行业网站的公司长沙的互联网网站公司
  • 济南网站建设运营新像素ui设计培训学校
  • ii6创建网站网站被惩罚之后怎么做
  • 用哪个网站做相册视频文件北京建设信源咨询有限公司网站
  • wordpress程序建站传媒公司官网
  • 蓟县做网站有了网站源码 怎么建设网站
  • 南京外贸网站建设案例国产服务器系统免费的有哪些
  • 网站标题在哪里设置地推是什么
  • 网站开发分层深圳金融网站建设
  • 北京免费建站wordpress自动翻页
  • 高端企业网站建设公司怎么做实用性网页设计模板代码网站
  • 朔州网站建设费用哪些网站可做矿机期货
  • 做360手机网站广州网站制作在线
  • 合理规划网站结构陕西手机网站建设公司排名
  • 渭南做网站的公司沈阳企业自助建站系统
  • 一个虚拟主机多个网站wordpress淘宝客网站运营
  • 隆昌网站建设山东聊城建设学校官网
  • 如何在网站上做社交的链接福州搜索引擎优化
  • 绵阳网站托管行业网站大全
  • 动态发布网站和静态发布网站站酷网素材
  • 系统之家网站怎么做的最新新闻事件今天国内大事
  • 网站建设 答辩记录平台营销策略
  • 江苏两学一做网站茂名网站建设培训
  • 免费的行情软件网站入口如何创建个人主页
  • 做一个普通网站多少钱建设银行app官方下载
  • 雪白丰腴做美妇网站wordpress登录查看插件
  • 购物帮做特惠的导购网站招个网站建设维护