在 C# ASP NET Core 中使用 JSON 而无需反序列化

Posted

技术标签:

【中文标题】在 C# ASP NET Core 中使用 JSON 而无需反序列化【英文标题】:Working with JSON in C# ASP NET Core without deserialization 【发布时间】:2022-01-24 06:08:07 【问题描述】:

我想知道是否有一种更快、更直接的方式在 C# ASP NET Core 中进行读写,而无需创建 JSON 数据模型类。

考虑以下从 API 接收的 JSON 数据。有没有办法直接将字段读取为字符串,而无需使用 JsonSerializer 对其进行反序列化?


  "data": [
    
      "id": "100285832430"
    ,
    
      "id": "102602230220"
    
  ],
  "paging": 
    "cursors": 
      "before": "MTAwMTIxMDMyNDMw",
      "after": "MTAyNjY4NzAyMjIw"
    
  

谢谢

【问题讨论】:

这是一个字符串。那么,你想用它做什么呢?制作模型类和根本不解析之间的“中间”解决方案是使用 JObject 或动态的。但我会在 BenchmarkDotnet 上提出任何针对对方的解决方案。结果可能令人惊讶。 您可以将您的 json 解析为 dynamic 而无需类。有时我发现它很有用Example 非常感谢。我需要像dynamic 这样的东西。 【参考方案1】:

您可以非常轻松地复制一些 json 文本,然后将其转换为模型。

或者使用http://www.quicktype.io之类的东西

你也可以使用匿名对象:

https://www.newtonsoft.com/json/help/html/DeserializeAnonymousType.htm

甚至是dynamic

https://***.com/a/63457332/4122889

顺便说一句,如果您正在处理大型数据集,您还可以读取部分 json:

https://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm

我猜你也可以使用正则表达式来解析字符串或编写自定义逻辑 - 但我当然不建议这样做。

例如:\"id\": \"([0-9]*)\" 获取所有 id。

然而,这对于开发来说并不快,我怀疑它对于应用程序来说会更快。坚持使用模型和 json。我不确定你的设置,但如果你有很多模型,也许有一些事情需要自动化?

【讨论】:

非常感谢。我知道 VS 中的特殊粘贴,但是 dynamic 是我正在寻找的东西。

以上是关于在 C# ASP NET Core 中使用 JSON 而无需反序列化的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Asp.NET Core WEB API 中使用 .Net (C#) 在 Payload 中创建具有自定义 JSON 声明的 JWT 令牌

c# – Asp.Net Core MVC中Request.IsAjaxRequest()在哪里?

如何在 C# 页面 ASP.NET Core MVC 上使用 SignInManager 和 Usermanager

在 C# ASP NET Core 中使用 JSON 而无需反序列化

Visual Studio 2017 使用 C# 7.2 发布 ASP.NET Core 应用程序

如何使用 ASP.NET Core 同时制作 Razor Page 和 C# 代码框架?