Сериализация / десериализация байтового массива в JSON.NET

У меня есть простой класс со следующим свойством:

[JsonObject(MemberSerialization.OptIn)]
public class Person
{
    ...
    [JsonProperty(PropertyName = "Photograph"]
    public byte[] Photograph { get; set; }
    ...
}

, но это не работает, когда я заполняю свойство Photograph с изображением и передать по http. Это может показаться простым вопросом, но я еще не нашел решения после нескольких часов онлайн-поиска, но как мне сериализовать / десериализовать массив байтов в Json.NET? Какие теги атрибутов мне нужны, или я должен сделать это по-другому? Большое спасибо!

29
задан Donut 22 June 2012 в 14:30
поделиться

2 ответа

public static T Deserialize<T>(byte[] data) where T : class
{
    using (var stream = new MemoryStream(data))
    using (var reader = new StreamReader(stream, Encoding.UTF8))
        return JsonSerializer.Create().Deserialize(reader, typeof(T)) as T;
}
30
ответ дан 28 November 2019 в 01:35
поделиться

Если вы используете LINQ to JSON , вы можете сделать это:

JObject.Parse(Encoding.UTF8.GetString(data));

Результат будет динамическим JObject.

Хотя это может быть не совсем то, что ОП хотел сделать, он может пригодиться другим, желающим десериализовать byte[], которые сталкиваются с этим вопросом.

5
ответ дан 28 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: