如何把返给前端的json中的null替换成空字符串?

前提原因:前端需要没有null值的json 

解决方案:用枚举写个单例模式的方法,把json中的null替换成空字符串""

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import java.util.Iterator;

public enum JsonTool {
    /**
     * 用枚举设计单例模式!
     */
    INSTANCE;

    /**
     * 将json对象中包含的null和JSONNull属性修改成""
     */
    public JSONObject filterNull(JSONObject jsonObj) {
        Iterator<String> it = jsonObj.keySet().iterator();
        Object obj;
        String key;
        while (it.hasNext()) {
            key = it.next();
            obj = jsonObj.get(key);
            if (obj instanceof JSONObject) {
                filterNull((JSONObject) obj);
            }
            if (obj instanceof JSONArray) {
                JSONArray objArr = (JSONArray) obj;
                for (int i = 0; i < objArr.size(); i++) {
                    filterNull(objArr.getJSONObject(i));
                }
            }
            if (obj == null) {
                jsonObj.put(key, "");
            }
        }
        return jsonObj;
    }
}

调用方法:

JsonTool.INSTANCE.filterNull(json)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以通过自定义一个间件来实现 ASP.NET Core WebApi 回统一格式参数的需求,下面是一个简单的实现方式: 1. 首先创建一个类来表示统一的回格式,如下所示: ``` public class ApiResponse<T> { public int Code { get; set; } public string Message { get; set; } public T Data { get; set; } } ``` 其,Code 表示回码,Message 表示回信息,Data 表示回数据。 2. 创建一个间件来处理回结果,如下所示: ``` public class ApiResponseMiddleware { private readonly RequestDelegate _next; public ApiResponseMiddleware(RequestDelegate next) { _next = next; } public async Task Invoke(HttpContext context) { // 执行后续间件 await _next(context); // 如果回的是 JsonResult 类型,则对回结果进行处理 if (context.Response.ContentType == "application/json") { var originalBodyStream = context.Response.Body; using (var responseBody = new MemoryStream()) { context.Response.Body = responseBody; var jsonSerializerSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; // 读取原始回结果 var streamReader = new StreamReader(context.Response.Body); var responseBodyText = await streamReader.ReadToEndAsync(); context.Response.Body.Seek(0, SeekOrigin.Begin); // 将原始回结果反序列化为 ApiResponse 类型 var result = JsonConvert.DeserializeObject<ApiResponse<object>>(responseBodyText, jsonSerializerSettings); // 将 Null 替换为字符串 result.Data = result.Data ?? string.Empty; // 将 ApiResponse 类型序列化为 Json 字符串 var newResponseBody = JsonConvert.SerializeObject(result); // 将处理后的结果写入 Response using (var sw = new StreamWriter(context.Response.Body)) { sw.Write(newResponseBody); } } } } } ``` 3. 在 Startup.cs 文件的 Configure 方法添加间件,如下所示: ``` public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 省略其他代码... app.UseMiddleware<ApiResponseMiddleware>(); // 省略其他代码... } ``` 这样就可以实现 ASP.NET Core WebApi 回统一格式参数的需求,并且将回结果Null 替换为字符串

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

希文先森

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值