Подтвердить что ты не робот

Как сериализовать сериал и десериализовать его из JSON?

Мне интересно, как сериализуется и десериализуется Tuple<T1, T2, T3, ...>. Я искал с помощью ключевых слов "json" и "tuple", но я не мог найти то, что хочу.

4b9b3361

Ответ 1

Я тестирую 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) будет сериализоваться в строку { "Item1": "one", "Item2": "hehe", "Item3": true}, и ее можно десериализовать до типа Tuple<string,string,bool>.