C# - десериализация JSON в ValueTuple

Функция кортежа C# была создана serialization для представления наборов jsonconvert значений, а не сущностей.

Имена jsonobject значений похожи на имена c#.net переменных. Как и имена переменных, имена json-parsing значений кортежей существуют jsonconvert только в исходном коде.

(string foo, bool bar) на serialization самом деле просто ValueTuple. точно csharp так же, как (string bar, bool foo):

(string foo, bool bar) a = ('one', true);
(string bar, bool foo) b = a;

Значения кортежа json-parsing хранятся в полях с именами json-encode Item1, Item2 и т. д.

Убедитесь сами, как csharp это работает here.

Если вы так newtonsoft любите использовать для этого unserialize кортежи значений, вам придется deserialize десериализовать себя:

var json = "[{\"foo\": \"1\", \"bar\": false}, {\"foo\": \"2\", \"bar\": false}]";

var jArray = JsonConvert.DeserializeObject (json);

var list = new List<(string foo, bool bar)>();

foreach (var item in jArray)
{
    list.Add((item.Value("foo"), item.Value("bar")));
}

c#

json

serialization

json.net

valuetuple

2022-10-10T15:54:24+00:00