JsonSerializer
, который я использую, System.Text.Json;
in. net core 3.1
Вот два проекта, один - проект A, другой - проект B.
Здесь это код проекта A:
namespace WebApplication1.Controllers
{
[Route("api/")]
public class TestController : Controller
{
[HttpGet]
[Route("Get")]
public async Task<string> Get()
{
Models.TestModel TestModel = new Models.TestModel() { Success = "1" };
string Content = JsonSerializer.Serialize(TestModel, typeof(Models.TestModel), new JsonSerializerOptions() { Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All) });
return Content;
}
}
}
А вот код проекта B:
namespace WebApplication2
{
[Route("api/")]
public class TestController : Controller
{
private readonly IHttpClientFactory _clientFactory;
public TestController(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
[HttpGet]
[Route("TestGet")]
public async Task TestGet()
{
var request = new HttpRequestMessage(HttpMethod.Get,
string.Format("https://localhost:44345/api/Get"));
var client = _clientFactory.CreateClient();
client.Timeout = TimeSpan.FromSeconds(5);
var response = await client.SendAsync(request);
string Content = "";
if (response.IsSuccessStatusCode)
{
Content = await response.Content.ReadAsStringAsync();
Models.TestModel TestModel = new Models.TestModel();
TestModel = (Models.TestModel)JsonSerializer.Deserialize(Content, typeof(Models.TestModel));
}
}
}
}
Оба они используют одну и ту же модель:
public class TestModel
{
public string Success { get; set; } = "";
public string SuccessRemark { get; set; } = "";
}
Теперь проблема в том, что проект А всегда будет выдавать JSON, содержащий странный символ '\'.
Например, право JSON равно
{"Success":"1","SuccessRemark":""}
И оно будет Оказывается, это так:
"{\"Success\":\"1\",\"SuccessRemark\":\"\"}"
Этот странный символ '\' делает проект B не может быть правильно десериализован.
Я рассмотрел использование метода замены для удаления символа '\ '.
Я следовал за всеми ответами в Замена backsla sh в строке , чтобы удалить символ' \ '. Между тем, ни один из них не работает.
Я знал другой способ получения json без странного символа '\':
[Produces("application/json")]
[HttpGet]
[Route("Get")]
public async Task<Models.TestModel> Get()
{
Models.TestModel TestModel = new Models.TestModel() { Success = "1" };
return TestModel;
}
Ну, таким образом, можно вернуть только модель stati c пока: Мне нужно вернуть модель успеха, если все коды работают успешно. Мне нужно вернуть модель ошибки, если код работает с ошибкой. Этот способ не может решить эту проблему. Не могли бы вы помочь мне? Спасибо.