반응형
JSON에서 바이트 배열을 직렬화/비직렬화합니다.그물
다음과 같은 속성을 가진 단순 클래스가 있습니다.
[JsonObject(MemberSerialization.OptIn)]
public class Person
{
...
[JsonProperty(PropertyName = "Photograph"]
public byte[] Photograph { get; set; }
...
}
그러나 Photograph 속성을 이미지로 채우고 http를 통해 전송하면 작동하지 않습니다.간단한 질문처럼 들리겠지만 온라인으로 몇 시간 동안 찾아봤지만 아직 해결책을 찾지 못했습니다. 하지만 Json에서 바이트 배열을 직렬화/직렬화하려면 어떻게 해야 합니까?NET? 어떤 속성 태그가 필요합니까?아니면 다른 방법으로 해야 합니까?감사합니다!
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;
}
바이트[]를 문자열로 변환한 후 JsonConvert 메서드를 사용하여 개체를 가져올 수 있습니다.
var bytesAsString = Encoding.UTF8.GetString(bytes);
var person = JsonConvert.DeserializeObject<Person>(bytesAsString);
LINQ to JSON을 사용하는 경우 다음을 수행할 수 있습니다.
JObject.Parse(Encoding.UTF8.GetString(data));
그 결과는 역동적으로 됩니다.JObject
.
이것이 OP가 의도하고 있는 것은 아닐 수도 있지만, 다른 OP가 이 기능을 역직렬화하려는 경우에는 도움이 될 수 있습니다.byte[]
이런 질문을 하게 됩니다.
이 회답에 근거해, 다음의 것을 넷 코어에서 사용할 수 있습니다.
using System.IO;
using System.Text.Json;
using System.Threading.Tasks;
namespace <MyNameSpace>
{
public static class ByteArrayExtensions
{
public static async Task<T> Deserialize<T>(this byte[] data) where T : class
{
using (var stream = new MemoryStream(data))
{
return await JsonSerializer.DeserializeAsync(stream, typeof(T)) as T;
}
}
}
}
이는 가독성에 유리한 것으로 간주될 수 있습니다.
var deserialized = await mySerializedByteArray.Deserialize<MyObjectClass>();
언급URL : https://stackoverflow.com/questions/9337255/serialize-deserialize-a-byte-array-in-json-net
반응형
'source' 카테고리의 다른 글
redux-persist와 redux-toolkit을 설정하는 방법 (0) | 2023.02.22 |
---|---|
Apache 2.4 - 구성 오류로 인해 요청이 10개의 내부 리디렉션 제한을 초과했습니다. (0) | 2023.02.18 |
wp-config로 변경되는 경우.php는 유효합니까? (0) | 2023.02.14 |
색인화된 하위 문서 필드에서 MongoDB "시작" 쿼리를 수행할 수 있습니까? (0) | 2023.02.14 |
모듈을 사용할 수 없거나 철자가 틀리거나 로드하지 않았습니다(하지만 로드하지 않았습니다). (0) | 2023.02.14 |