当前位置: 首页 > java >正文

.net core接收对方传递的body体里的json并反序列化

1、首先我在通用程序里有一个可以接收对象型和数组型json串的反序列化方法

public static async Task<Dictionary<string, string>> AllParameters(this HttpRequest request)
{
Dictionary<string, string> parameters = QueryParameters(request);

            request.EnableBuffering();

            using (StreamReader stream = new(request.Body, Encoding.UTF8, leaveOpen: true))
{
string content = await stream.ReadToEndAsync();
request.Body.Position = 0;

                if (!string.IsNullOrWhiteSpace(content))
{
try
{
// 去除 BOM
content = content.Trim('\uFEFF');
// 去除所有 \u00A0(不间断空格)
content = content.Replace("\u00A0", "");
// 可选:去除所有不可见空白字符
content = Regex.Replace(content, @"[\u200B-\u200D\uFEFF]", "");

                        string trimmed = content.TrimStart();
if (!(trimmed.StartsWith("{") || trimmed.StartsWith("[")))
throw new Exception("请求体不是合法的 JSON 格式。");

                        var node = JsonNode.Parse(content);
if (node is JsonObject obj)
{
foreach (KeyValuePair<string, JsonNode?> item in obj)
{
if (string.Compare(item.Key, "cmd", true) == 0)
continue;

                                parameters.AddOrUpdate(item.Key, item.Value?.ToString());
}
}
else if (node is JsonArray arr)
{
parameters.AddOrUpdate("array", arr.ToJsonString());
}
else
{
throw new Exception("不支持的 JSON 类型: " + node?.GetType().Name);
}
}
catch (Exception ex)
{
throw new Exception("解析 JSON 失败,原始内容: " + content, ex);
}
}
}

            return parameters;
}
}
}

2、其次我在我的接口程序里引用了以上程序的dll,然后我就可以用它了

 public string ReceiveData([FromBody] List<OrgModel> array, [FromQuery] string model, [FromQuery] bool? dict=null)

{

  string code=“”;

  string name=“”;

    foreach (var zzData in array)

  {

      code=zzData.CODE;

      name=zzData.NAME;

  }

return "{code:"+code+"name:"+name+"}";

}

http://www.xdnf.cn/news/16087.html

相关文章:

  • P5535 【XR-3】小道消息
  • 【MyBatis-Plus】核心开发指南:高效CRUD与进阶实践
  • 83、设置有人DTU设备USR-M100采集传感器数据,然后上传阿里云服务
  • 【音视频学习】五、深入解析视频技术中的像素格式:颜色空间、位深度、存储布局
  • CodeBuddy IDE实战:用AI全栈能力快速搭建课程表网页
  • 借助Aspose.HTML控件,使用 Python 编程将网页转换为 PDF
  • Object Sense (OSE):一款从编辑器脚本发展起来的编程语言
  • 优化:Toc小程序猜你喜欢功能
  • Java 堆(优先级队列)
  • AI 及开发领域动态与资源汇总(2025年7月23日)
  • 编程语言Java——核心技术篇(二)类的高级特性
  • 逆向入门(41)程序逆向篇-crackme
  • OceanBase数据库
  • 设备虚拟化技术
  • 从零开始学习Dify-Excel数据可视化(四)
  • Rocky9部署Zabbix7(小白的“升级打怪”成长之路)
  • 【bug】websocket协议不兼容导致的一个奇怪问题
  • (46)elasticsearch-华为云CCE无状态负载部署
  • #Linux内存管理# 在一个播放系统中同时打开几十个不同的高清视频文件,发现播放有些卡顿,打开视频文件是用mmap函数,请简单分析原因。
  • MCU芯片AS32S601在卫星光纤放大器(EDFA)中的应用探索
  • VPS海外部署Linux分布式计算任务调度-跨国资源整合方案
  • k8s:docker compose离线部署haborV2.13.1及采用外部的postgresql及redis数据库
  • uni-app动态获取屏幕边界到安全区域距离的完整教程
  • 在离线 Ubuntu 22.04机器上运行 ddkj_portainer-cn 镜像 其他相关操作也可以复刻 docker
  • Elasticsearch 学习笔记
  • 使用react编写一个简单的井字棋游戏
  • nodejs模块化
  • JS WebAPIs DOM节点概述
  • 前端_Javascript复习
  • C语言:第11天笔记