System.Text.Json(.Net 5)

这篇博客主要展示了如何利用JsonSerializer将字符串转换为List<UserInfo>对象,并解决了Json中文编码问题。此外,还演示了如何使用EFcore执行SQL查询来获取View_UserInfo表中的数据。
  //  List<UserInfo> jobInfoList = JsonSerializer.Deserialize<List<UserInfo>>(searchTerm);//将字符转化为List

var testType = JsonSerializer.Deserialize(searchTerm);

解决Json中文编码问题:

return JsonSerializer.Serialize(linqs,
options: new System.Text.Json.JsonSerializerOptions
{
Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping
}
);

//使用EFcore 执行sql语句
return _userInfoContext.UserInfos .FromSqlRaw("SELECT * FROM View_UserInfo ").ToList();

<think>我们正在处理用户关于System.Text.Json最低.NET版本要求的问题。根据已知信息,System.Text.Json是在.NET Core 3.0中引入的,因此最低要求是.NET Core 3.0或更高版本。同时,.NET Standard 2.0也可以使用,但需要额外安装System.Text.Json包。 注意:.NET Framework 4.6.1及以上版本可以通过安装NuGet包来使用System.Text.Json,但这是有限制的,因为.NET Framework不是.NET Core或.NET 5+,所以有些功能可能不可用或行为不同。 因此,我们可以这样回答: 1. 原生支持的最低版本:.NET Core 3.0 2. 通过.NET Standard 2.0:可以用于支持.NET Standard 2.0的平台,包括.NET Framework 4.6.1+(需要安装NuGet包) 同时,我们也要注意,在.NET Framework中使用System.Text.Json可能不是官方推荐的方式,因为Newtonsoft.Json通常是更好的选择(如之前的回答所述),但用户如果只是想知道最低版本要求,我们就直接回答。 另外,根据用户指令,我们需要生成相关问题。 回答结构: 一、明确最低版本要求 二、详细说明不同平台的支持情况 三、在.NET Framework中使用System.Text.Json的注意事项 四、生成相关问题</think>### System.Text.Json 的最低 .NET 版本要求 System.Text.Json 是微软推出的高性能 JSON 序列化库,其最低支持版本要求如下: #### 一、核心支持版本 **最低原生支持版本**:$ \boxed{\text{.NET\ Core\ 3.0}} $ - 首次随 [.NET Core 3.0](https://devblogs.microsoft.com/dotnet/announcing-net-core-3-0/) 正式发布(2019年9月) - 包含完整功能集: ```csharp // 基础序列化/反序列化 string json = JsonSerializer.Serialize(obj); var obj = JsonSerializer.Deserialize<T>(json); // 配置选项 var options = new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase, WriteIndented = true }; ``` #### 二、向后兼容方案 1. **.NET Standard 2.0 兼容** - 通过 NuGet 包 [System.Text.Json](https://www.nuget.org/packages/System.Text.Json) 支持 - 兼容平台包括: - .NET Framework 4.6.1+ - .NET Core 2.0+ - Mono 5.4+ - Xamarin.iOS 10.14+ - 安装命令: ```bash Install-Package System.Text.Json -Version 4.7.2 ``` 2. **.NET Framework 4.6.1+ 示例** ```csharp using System.Text.Json; // 需手动安装 NuGet 包 var options = new JsonSerializerOptions { PropertyNameCaseInsensitive = true, NumberHandling = JsonNumberHandling.AllowReadingFromString }; string json = File.ReadAllText("data.json"); var data = JsonSerializer.Deserialize<MyModel>(json, options); ``` #### 三、版本功能差异 | 功能 | .NET Core 3.0 | .NET 5+ | .NET Framework 4.6.1+ (NuGet) | |--------------------------|---------------|---------------|-------------------------------| | 异步序列化 | ❌ | ✅ | ❌ | | `JsonDocument` 解析 | ✅ | ✅ | ✅ | | 字段支持 | ❌ | ✅ | ❌ | | 不可变类型支持 | ❌ | ✅ | ❌ | | 源生成器 (Source Gen) | ❌ | ✅ (.NET 6+) | ❌ | > **注意**:在 .NET Framework 中使用时,部分高级功能(如异步流处理、源生成器)不可用[^1]。 #### 四、验证版本兼容性 通过代码检查运行时版本: ```csharp // 检查是否支持 System.Text.Json bool isSupported = Type.GetType("System.Text.Json.JsonSerializer, System.Text.Json") != null; // 获取实际运行时版本 string version = Environment.Version.ToString(); ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

.Net10

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

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

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

打赏作者

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

抵扣说明:

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

余额充值