元组如何从JSON序列化和反序列化?

我很好奇Tuple序列化和反序列化。 我使用关键字“json”和“tuple”搜索,但我找不到我想要的东西。

我通过UnitTest和Json.net进行测试,测试代码如下。 结果显示Tuple是可序列化和可反序列化的。 所以我可以在我的应用程序中使用它们。

测试代码

 public class Foo { public List> Items { get; set; } public Foo() { Items = new List>(); } public override string ToString() { StringBuilder sb = new StringBuilder(); foreach (var a in Items) { sb.Append(a.Item1 + ", " + a.Item2 + ", " + a.Item3.ToString() + "\r\n"); } return sb.ToString(); } } [TestClass] public class NormalTests { [TestMethod] public void TupleSerialization() { Foo tests = new Foo(); tests.Items.Add(Tuple.Create("one", "hehe", true)); tests.Items.Add(Tuple.Create("two", "hoho", false)); tests.Items.Add(Tuple.Create("three", "ohoh", true)); string json = JsonConvert.SerializeObject(tests); Console.WriteLine(json); var obj = JsonConvert.DeserializeObject(json); string objStr = obj.ToString(); Console.WriteLine(objStr); } } 

评论

Tuple.Create("own","hehe",true)将序列化为字符串{“Item1”:“one”,“Item2”:“hehe”,“Item3”:true},并且可以反序列化to Tuple type。

如果您正在寻找简短的答案。 我正在使用JsonConvert

 var testTuple = Tuple.Create(1234, "foo", true); var serialized = JsonConvert.SerializeObject(testTuple); Console.WriteLine(serialized); // prints: {"Item1":1234,"Item2":"foo","Item3":true} 

我做了一个小小的小提琴 。