В приложении C # я в какой-то момент получаю двоичные данные, которые сериализуются в JObject со структурой

{
  "0": 255,
  "1": 216,
  "2": 255,
  "3": 224,
  "4": 0,
  "5": 16,
.
.
.
"12345" : 255

}

, поэтому всегда {"index": value}. РЕДАКТИРОВАТЬ: json был просто примером, JObject фактически имеет 12345 дочерних элементов типа JToken, где каждый JToken имеет имя «индекс» и значение JValue (фактическое двоичное значение).

Мне нужно десериализовать этот объект JObject в byte[], сохранив только значения. Есть ли какой-нибудь умный способ сделать это, кроме циклического прохождения объекта и сохранения значений в байтовом массиве, одно за другим?

0
Honza 3 Мар 2021 в 17:23

1 ответ

Лучший ответ

Код, который вы ищете:

jObject.Properties().Select(p => (byte) p.Value).ToArray();

Но у меня остались 2 вопроса:

  1. Вам действительно нужно преобразовать его из двоичного файла в JSON? Разве вы не можете напрямую десериализовать его в объект?

  2. Это явно массив, поэтому почему ваш JSON не является таким массивом:

    [255, 216, ...]

0
Arcord 3 Мар 2021 в 14:45