在做接口开发时常遇到获取某个接口json数据中某个节点的值,下面的工具就能实现。
例:如下json数据,要获取phone的值
{
"subject": {
"createBy": 1,
"delFlag": 0,
"departmentId": 1,
"direction": "IN",
"id": 1,
"interviewee": "床位", //受访人
"passageTime": 1578902083000,
"phone": "18538201773",
"searchScore": "89.25835",
"visitorId": 1,//访客id
},
"type": "2"
}
代码如下:
//jsonBody为要取值的son数据 “subject”为json数据中的一个key map为key的vlue值
Map<String,Object> map = (Map<String, Object>) MyUtil.getValue(jsonBody,"subject");
//得到key为phone的值
String phone = map.get("phone").toString();
创建工具类MyUtil,把如下代码放到类中,在json字符串中,根据key值找到value
public class MyUtil{
/**
* 在json字符串中,根据key值找到value
*
* @param json 需要得到key的json字符串
* @param key 需要得到value的key
* @return
*/
public static Object getValue(String json, String key) {
Object rulsObj = null;
//json转map
Map<?, ?> rulsMap = jsonToMap(json);
//在map中得到key对应的value
if (rulsMap != null && rulsMap.size() > 0) {
rulsObj = rulsMap.get(key);
}
return rulsObj;
}
/**
* 将json格式转换成map对象
*
* @param json
* @return
*/
public static Map<String, Object> jsonToMap(String json) {
//gson-2.6.2.jar包(com.google.code.gson:gson:2.6.2)
Gson gson = null;
Map<String, Object> objMap = null;
if (gson != null) {
Type type = new TypeToken<Map<String, Object>>() {
}.getType();
objMap = gson.fromJson(json, type);
}
if (objMap == null) {
objMap = new HashMap<String, Object>();
}
return objMap;
}
}
大功告成,会继续分享。