【问题标题】:replace null with blank in json response and again convert it in json将 json 响应中的 null 替换为空白,然后再次将其转换为 json
【发布时间】:2018-12-05 04:50:47
【问题描述】:

**输出: ===========>>>>

"status": "success",
"messages": {
    "01010000": "Data available"
},
 "data": {
   "result": [
      {
        "issuerName": "AXIS BANK LIMITED",
        "totalIssuerLimit": "55,000,000,000.00",
        "issuerLimitUtilised": "0",
        "issuerLimitAvailable": "55,000,000,000.00",
        "issue": "INE238A08302",
        "totalIssueLimit": "2,000,000,000.00",
        "issueLimitUtilised": "0",
        "issueLimitAvailable": "2,000,000,000.00"
       },
      {
          "issuerName": null,
          "totalIssuerLimit": null,
          "issuerLimitUtilised": null,
          "issuerLimitAvailable": null,
          "issue": "INE238A08344",
          "totalIssueLimit": "50,000,000,000.00",
          "issueLimitUtilised": "0",
          "issueLimitAvailable": "50,000,000,000.00"
    },**

将 json 响应中的 null 替换为空白,然后再次将其转换为 json

public Response limitAvailability(String dataTransportFormat) throws Exception {
    logger.info("limitAvailability service");
    logger.info("dataTransportFormat: " + dataTransportFormat);

    Response response = null;
    try {
        Map<String, Object> uriVariables = new HashMap<>();
        uriVariables.put("dataTransportFormat", dataTransportFormat);


        /* System.out.println("url"+webServiceProperties.getUrls().get(MARGINS_TPR) + URL_SEGMENTS_SEPARATOR
            + webServiceProperties.getEndpoints().get(COLLATERAL_DETAILS)); */
        response = genericRestConsumer.exchange(
            webServiceProperties.getUrls().get(MARGINS_TPR) + URL_SEGMENTS_SEPARATOR
                            + webServiceProperties.getEndpoints().get(LIMIT_AVAILABILITY),
                    HttpMethod.GET, uriVariables);
        System.out.println("response-----------"+response);
        System.out.println("uriVariables-----------"+uriVariables);

        logger.info("limitAvailability data response: " + response);
    } catch (Exception e) {
        logger.error("Exception", e);
        throw e;
    }

    return response;
}

【问题讨论】:

  • 你可以得到json作为String和使用后replaceAll("null", "")
  • @raul1ro 反正没人喜欢明渠银行
  • @kumesana - 我不明白你想说什么。
  • @raul1ro 我的意思是这种解决问题的方法,将完全替换所有和任何由 ​​n 然后 u 然后 l 然后 l 组成的字符序列。它根本不关心这是 JSON 空文字还是字符串的一部分,例如“nullificationIssue”或“nullah bank and co”
  • @raul1ro 这是一个相当严重的错误。

标签: java json spring-mvc spring-boot


【解决方案1】:

只需在控制器中创建一个方法,并将所有 null 替换为空字符串。(例如此处的 Person 类)

@Override
public void serialize(Person value, JsonGenerator jgen, SerializerProvider provider) 
  throws IOException, JsonProcessingException {
        jgen.writeStartObject();
        jgen.writeStringField("name", value.name);
        if (value.first == null) {
            jgen.writeStringField("first", ""); 
        }else{
            jgen.writeStringField("first", value.first);
        }
        if(value.last == null){
            jgen.writeStringField("last", "");
        }else{
            jgen.writeStringField("last", value.last);
        }
        jgen.writeEndObject();
    }
}

然后在你的实体类上

@JsonSerialize(using = PersonSerializer.class)
public class Person {
    //First/Last name etc
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多