51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

使用 beanshell 脚本解析 JSON 返回结果总结

在使用 MeterSphere 过程中,不可避免的需要使用 beanshell脚本,但是面对千奇百怪的 JSON 返回结果,有些人看了不知所措,甚至当返回结果比较多,都挤在一起,看的让人窒息,就像看别人代码一行注释都没的心情差不多。

一、 JSON 语法 {#%E4%B8%80%E3%80%81-json-%E8%AF%AD%E6%B3%95}

(1)数据在名称/值对中 --key-value
(2)数据由逗号分隔
(3)大括号保存对象
(4)中括号保存数组
当拿到一个 JSON 返回结果又多,又挤在一起的时候,可以使用在线JSON解析或者 JSON viewer工具进行格式化,这样做有 2 个目的,一是为了美化 JSON,二是为了梳理 JSON 格式参数的目录和层级。

二、JSON 格式化 {#%E4%BA%8C%E3%80%81json-%E6%A0%BC%E5%BC%8F%E5%8C%96}

1.使用在线解析工具:JSON 在线解析及格式化验证 - JSON996.com
格式化效果前后展示:
image-1663839260668
2.下载 JSON Viewer 工具
格式化效果前后对比展示:
image-1663839287366
image-1663839358415
因此,只要返回结果是JSON格式,不管是返回数据一个截屏都放不下,还是像一坨屎一样挤在一起,通过实际情况对比,更加突出 JSON 格式后美化效果以及调理更加清晰明了的重要性。

三、JSON 实战,解析数据 {#%E4%B8%89%E3%80%81json-%E5%AE%9E%E6%88%98%EF%BC%8C%E8%A7%A3%E6%9E%90%E6%95%B0%E6%8D%AE}

先导入jar包:
import com.alibaba.fastjson.JSONArray; //数组
import com.alibaba.fastjson.JSONObject;

1.普通格式:如:{"name":"helloWord","id":1}
JSONObject jsonObject = JSON.parseObject(content);
String id = jsonObject.getString("id");
String s = jsonObject.getString("name");
2.JSON 中包含对象
如:{"phone":{"phoneNumber":110,"name":"彭"}}
JSONObject jsonObject = JSON.parseObject(content);
JSONObject user = jsonObject.getJSONObject("phone");
Integer id = user.getInteger("id");
String name = user.getString("name");
3.JSON 中包含 list
如:{"code":0,"message":"success","signature":"6ec967456d8a","timestamp":1663049074454,"body":{"count":1,"size":0,"current":0,"data":{"token":"seIpRLWrYSfqD83ltY2CwLd5","roleId":0,"id":"0","name":null}}}
JSONObject jsonObject=JSONObject.parseObject(content);
JSONObject body= (JSONObject) jsonObject.get("body");
JSONArray datas= (JSONArray) body.get("data");
String id=((JSONObject) datas.get(0)).getString("id");

四、总结 {#%E5%9B%9B%E3%80%81%E6%80%BB%E7%BB%93}

首先进行格式化转换,目的是为了了解数据所在层级目录,知道了层级,就跟剥洋葱一样,一层一层的解析。选择好的工具,事半功倍。
其次,要明确知道数据格式,大括号--- {} 保存对象,中括号---[] 保存数组等。
最后选择合适的方式,解析返回结果。

赞(1)
未经允许不得转载:工具盒子 » 使用 beanshell 脚本解析 JSON 返回结果总结