json 对象里面含有 =的解决办法

           今天通过restful 调用接口的时候,遇到这样的问题,通过接口返回的数据如下:

          

{
    "code": 0,
    "message": "成功",
    "result": {
        "count": 1
    }
}

 

 

  然后 需要获取 count后面的值,于是 通过json转化的方式:

 

  

 RestClient client = RestClients.createDefault();
            String host = SystemProperties.getInstance().getProperty("****l");;
            Integer strNum = 0;
            String url = host + "/restful/biProxyService/article/count";
            RestRequest request = new RestRequest(url);
            request.addParam("circleId", circleId);
            request.addParam("articleId",articleId);
            try{
                RestResponse<Object> response = client.post(request, Object.class);
                logger.info("返回数据:" + response);
                if(response.isSuccess()){
                    Object obj= response.getResult();
                    logger.info("obj:" + obj);
                    JSON json = (JSON)JSON.parse(obj);
                    JSONObject jsonObject = (JSONObject)json;
                    strNum = jsonObject.getJSONObject("result")==null?0:jsonObject.getJSONObject("result").getInteger("count");
                    logger.info("strNum");
                }
            }catch (Exception e){
                logger.error("调用bi获取文章数据异常",e);
            }
            return strNum;

 

 

  然后怎么都转不了,最后打印日志发现 response.getResult的结果是:

   

{code=0,message=成功,result={count:12}}

  额 ,然后报包json转化异常了,因为正常的json格式应该是:

{code:0,message:成功,result:{count:12}}

最后想到了google的gson,通过

   Gson gson = new Gson();

  gson.toJson(obj)

 转化为String对象,在通过fastjson转化 就好了。

 

完整代码:

  public Integer getArticleCount(String circleId,String articleId) {
            RestClient client = RestClients.createDefault();
            String host = SystemProperties.getInstance().getProperty("***");;
            Integer strNum = 0;
            String url = host + "/restful/biProxyService/article/count";
            RestRequest request = new RestRequest(url);
            request.addParam("circleId", circleId);
            request.addParam("articleId",articleId);
            try{
                RestResponse<Object> response = client.post(request, Object.class);
                logger.info("返回数据:" + response);
                if(response.isSuccess()){
                    Object obj= response.getResult();
                    logger.info("obj:" + obj);
                    Gson gson = new Gson();
                    String str = gson.toJson(obj);
                    logger.info(str);
                    JSON json = (JSON)JSON.parse(str);
                    JSONObject jsonObject = (JSONObject)json;
                    strNum = jsonObject.getJSONObject("result")==null?0:jsonObject.getJSONObject("result").getInteger("count");
                    logger.info("strNum");
                }
            }catch (Exception e){
                logger.error("调用bi获取文章数据异常",e);
            }
            return strNum;
        }

 

转载于:https://www.cnblogs.com/thinkingandworkinghard/p/8550995.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中获取请求体的JSON并解析为JSON对象时出现了参数含有空格和乱码的问题。出现这个问题可能是由于请求体JSON中的参数值中含有空格或者非UTF-8编码导致的。 要解决这个问题,首先需要检查并确认请求体JSON中的参数值是否正确且符合JSON格式的规范。如果参数值含有空格或其他特殊字符,建议在发送请求时对参数值进行URL编码,确保其在传输过程中不会出现乱码。 在Java代码中,可以使用URLDecoder对请求体JSON进行解码。例如,可以使用如下代码获取请求体中的JSON字符串,并进行解码: String body = request.getReader().lines().collect(Collectors.joining(System.lineSeparator())); String decodedBody = URLDecoder.decode(body, "UTF-8"); 接下来,可以使用JSON库(如Jackson、Gson等)将解码后的JSON字符串解析为JSON对象。例如,对于使用Jackson库的情况,可以使用如下代码将解码后的JSON字符串解析为JSON对象: ObjectMapper mapper = new ObjectMapper(); JsonNode jsonNode = mapper.readTree(decodedBody); 在解析JSON对象之后,可以通过遍历JSON对象的属性、调用对应的getter方法等获取具体的参数值,进行后续的业务逻辑处理。 综上所述,要解决Java获取请求体JSON解析为JSON对象参数含有空格乱码的问题,需要注意参数值的格式以及编码方式,并在Java代码中正确解码和解析JSON对象。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值