在使用 MeterSphere 过程中,不可避免的需要使用 beanshell脚本,但是面对千奇百怪的 JSON 返回结果,有些人看了不知所措,甚至当返回结果比较多,都挤在一起,看的让人窒息,就像看别人代码一行注释都没的心情差不多。
一、 JSON 语法
(1)数据在名称/值对中 --key-value
(2)数据由逗号分隔
(3)大括号保存对象
(4)中括号保存数组
当拿到一个 JSON 返回结果又多,又挤在一起的时候,可以使用在线JSON解析或者 JSON viewer工具进行格式化,这样做有 2 个目的,一是为了美化 JSON,二是为了梳理 JSON 格式参数的目录和层级。
二、JSON 格式化
1.使用在线解析工具:JSON 在线解析及格式化验证 - JSON996.com
格式化效果前后展示:
2.下载 JSON Viewer 工具
格式化效果前后对比展示:
因此,只要返回结果是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”);
四、总结
首先进行格式化转换,目的是为了了解数据所在层级目录,知道了层级,就跟剥洋葱一样,一层一层的解析。选择好的工具,事半功倍。
其次,要明确知道数据格式,大括号— {} 保存对象,中括号—[] 保存数组等。
最后选择合适的方式,解析返回结果。