首页 新闻 会员 周边

.NET: System.Text.Json 序列化 Tuple 类型的值时如何保留字段名称

0
悬赏园豆:50 [已解决问题] 解决于 2023-04-24 20:57

比如下面的 C# 代码

(string DisplayName, bool? IsVip) tuple = ("cnblogs", true);
var options = new JsonSerializerOptions
{
    IncludeFields = true,
};
var json = System.Text.Json.JsonSerializer.Serialize(tuple, options);
Console.WriteLine(json);

输出的序列化结果没有保留字段名:

{"Item1":"cnblogs","Item2":true}

请问如何保留字段名称?即下面的序列化结果:

{"displayName":"cnblogs","isVip":true}
dudu的主页 dudu | 高人七级 | 园豆:30994
提问于:2023-04-23 12:21
< >
分享
最佳答案
1

转返回一个record对象.

(string DisplayName, bool? IsVip) tuple = ("cnblogs", true);
===>
record  r(string DisplayName, bool? IsVip) ;
var tuple = new r("cnblogs", true);

tuple 本来就是item1,item2,itemN 这样命名属性的.
(string DisplayName, bool? IsVip) tuple 这只是一个语法糖. 对tuple的解构.
比如说对 tuple.DisplayName 的调用. 直接上去看反编译的代码就会发现是 tuple.Item1

https://learn.microsoft.com/zh-cn/dotnet/csharp/fundamentals/functional/deconstruct

收获园豆:50
czd890 | 专家六级 |园豆:14412 | 2023-04-23 12:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册