json解析样例 获取key value

该代码段展示了如何使用阿里巴巴的Fastjson库解析API返回的JSON字符串,检查响应状态并从中提取数据。首先,它将空字符串转换为null,然后将非字符串结果转化为JSON格式。接着,获取'code'字段,判断是否为200,如果不是则返回null。如果存在'value'字段,它会尝试将其转换为List<String>,无论是直接解析JSONArray还是转换为Map后再提取键值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.44</version>
  </dependency>
public static List<String> parseApiResult(String result) {
       if (StringUtils.isBlank(result)) {
          return null;
       }
       if (result instanceof String) {
            result = String.valueOf(result);
        } else {
            result = JSON.toJSONString(result);
      }
    JSONObject jsonResult = JSON.parseObject(result);
    String data = jsonResult.getString("code");
    if (StringUtils.isBlank(data) || !"200".equals(data)) {
        return null;
    }
    
    Object value = jsonResult.get("value");
    if (null == value) {
        return null;
    }
    List<String> menuList = Lists.newArrayList();
    if (value instanceof JSONArray) {
        JSONArray jsonArray = jsonResult.getJSONArray("value");
        for(int i=0; i<jsonArray.size(); i++){
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            Iterator iter = jsonObject.entrySet().iterator();
            while(iter.hasNext()){
                Map.Entry entry = (Map.Entry) iter.next();
                //entry.getValue().toString()
                menuList.add(entry.getKey().toString());
            }
        }
    }else {
        Map maps = (Map) JSON.parse(value.toString());
        for (Object map : maps.entrySet()) {
            //(Map.Entry) map).getValue()  stream循环也行
            menuList.add(((Map.Entry) map).getKey().toString());
        }
    }
    return menuList;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值