我很好奇Tuple<T1, T2, T3, ...>
如何序列化和反序列化。我使用关键字“json”和“tuple”搜索,但我找不到我想要的东西。
答案 0 :(得分:37)
我按UnitTest
和Json.net进行测试,测试代码如下。结果显示Tuple<T1,T2,T3,...>
是可序列化和可反序列化的。所以我可以在我的应用程序中使用它们。
public class Foo {
public List<Tuple<string, string, bool>> Items { get; set; }
public Foo()
{
Items = new List<Tuple<string, string, bool>>();
}
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<Foo>(json);
string objStr = obj.ToString();
Console.WriteLine(objStr);
}
}
Tuple.Create("own","hehe",true)
将序列化为字符串{&#34; Item1&#34;:&#34;一个&#34;,&#34; Item2&#34;:&#34; hehe&#34; ,&#34; Item3&#34;:true},可以将其反序列化为Tuple<string,string,bool>
类型。
答案 1 :(得分:1)
如果您正在寻找一个简短的答案。我正在使用 JsonConvert 。
var testTuple = Tuple.Create(1234, "foo", true);
var serialized = JsonConvert.SerializeObject(testTuple);
Console.WriteLine(serialized);
// prints: {"Item1":1234,"Item2":"foo","Item3":true}
我做了一个minimal fiddle。