【发布时间】:2022-01-22 22:45:22
【问题描述】:
JSON 序列化程序返回一个空的 JSON 对象。
using System.Text.Json;
(int, int) tuple1 = (1, 2);
var token = JsonSerializer.Serialize(tuple1); // return empty object {}
(int item1, int item2) tuple2 = (1, 2);
token = JsonSerializer.Serialize(tuple2); // return empty object {}
(int item1, int item2) tuple3 = (item1:1, item2:2);
token = JsonSerializer.Serialize(tuple3); // return empty object {}
它可以通过许多解决方法来传递
我试图了解为什么或是什么阻止了序列化程序理解元组
和元组的结构有关系吗
【问题讨论】:
-
你为什么使用元组?你期望得到什么? ValueTuple 没有属性,只有公共字段。这些字段被命名为
Item1、Item2等。 -
我发现有趣的是,序列化程序可以使用更明确的
Tuple<int,int>并具有属性Item1和Item2 -
@TJRockefeller 这些是类,它们实际上具有属性。值元组没有。
-
@TJRockefeller 这不是更明确,而是完全不同。
Tuple<int,int>是具有属性的 referencey 类型。(int,int)是一个 ValueTuple,一个带有字段的结构体。序列化程序默认使用属性,因为字段通常是实现细节
标签: c# json tuples .net-6.0 system.text.json