Как я могу сериализовать объект, но оставить данное свойство сериализованным в байтовый массив? - PullRequest
0 голосов
/ 24 октября 2019

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

using System.Text;
using Microsoft.AspNetCore.Mvc;

namespace FightClubApi.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class ProjectMayhemController : ControllerBase
    {
        [HttpGet]
        public Member Get() =>
            new Member
            {
                Name = "Robert Paulson",
                Code = ASCIIEncoding.ASCII.GetBytes("His name was Robert Paulson")
            };
    }

    public class Member
    {
        public string Name { get; set; }
        public byte[] Code { get; set; }
    }
}

При достижении этой конечной точки API (с использованием GET https://localhost:5001/api/ProjectMayhem) возвращается следующий JSON:

{
  "name": "Robert Paulson",
  "code": "SGlzIG5hbWUgd2FzIFJvYmVydCBQYXVsc29u"
}

Однако я быкак свойство Member.Code для сериализации в JavaScript Uint8Array.

Я мог бы преобразовать свойство JSON в кодировке Base64 обратно в Uint8Array, используя что-то вроде:

code = new TextEncoder("utf-8").encode(atob(code));

,но я хочу не делать этого на переднем конце.

1 Ответ

0 голосов
/ 24 октября 2019

Только что понял, что могу сделать это, если я сделаю Code список байтов, т. Е.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.AspNetCore.Mvc;

namespace FightClubApi.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class ProjectMayhemController : ControllerBase
    {
        [HttpGet]
        public Member Get() => new Member
        {
            Name = "Robert Paulson",
            Code = ASCIIEncoding.ASCII.GetBytes("His name was Robert Paulson")
                                      .ToList()
        };
    }

    public class Member
    {
        public string Name { get; set; }
        public List<byte> Code { get; set; }
    }
}

Достижение этой конечной точки API (использование GET https://localhost:5001/api/ProjectMayhem) возвращает следующий JSON:

{
  "name": "Robert Paulson",
  "code": [
    72, 105, 115, 32, 110, 97, 109, 101, 32, 119, 97, 115, 32, 82, 111, 98, 101, 114, 116, 32, 80, 97, 117, 108, 115, 111, 110
  ]
}

Мне просто нужно привести его к Uint8Array.

...