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


Administrator
飞致云 发布于 2022-09-22 / 1473 阅读 / 0 评论 /
在使用 MeterSphere 过程中,不可避免的需要使用beanshell脚本,但是面对千奇百怪的 JSON 返回结果,有些人看了不知所措,甚至当返回结果比较多,都挤在一起,看的让人窒息的时候。写脚本的欲望都没有,真的是出师未捷身先死。一、 JSON 语法:(1)数据在名称/值对中 --key-v

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

一、 JSON 语法

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

二、JSON 格式化

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

三、JSON 实战,解析数据

先导入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”);

四、总结

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



是否对你有帮助?