Код: Выделить всё
JsonConvert.SerializeObjectКод: Выделить всё
class Program
{
static void Main(string[] args)
{
var tasks = new List();
for (int i = 0; i < 10; i++)
{
var task = Task.Factory.StartNew(() =>
{
var token = CreateRandomToken();
_ = typeof(TestObject).GetProperty("Version");
var str = JsonConvert.SerializeObject(token);
Console.WriteLine(str);
});
tasks.Add(task);
}
Task.WaitAll(tasks.ToArray());
Console.ReadLine();
}
private static TestObject CreateRandomToken()
=> new TestObject { TokenHash = "123456789", Name = "Name", Version = "123" };
}
public class TestObject
{
public string TokenHash { get; set; }
public string Name { get; set; }
public string Version { get; set; }
}
[img]https://i .sstatic.net/r7RJc.png[/img]
Поле «Версия» находится в начале JSON, а не в конце
< р>Если удалим
Код: Выделить всё
_ = typeof(TestObject).GetProperty("Version");
- тогда сортировка полей не изменится
или если вы вызовете код в основном потоке, то и сортировка не изменится

если я украслю свой объект атрибутами [JsonProperty (Order = 1)], то сортировка будет не такой, как я указал в атрибутах
< р>Как это исправить? исправить без использования атрибута [JsonProperty (Order = 1)]
Обновлено:
Мы используем строку JSON для создания цифрового подпись, если порядок полей изменится, цифровая подпись не будет действительна, поэтому для меня важен порядок полей
Подробнее здесь: https://stackoverflow.com/questions/701 ... ds-in-json
Мобильная версия