LINUX.ORG.RU

ASP.NET Web API - как заставить его слать plain text в JSON без перекодирования HTML entities?

 , , , ,


0

0

суть вопроса..

есть код на шарпе, есть возможность менять исходники.

код умеет читать текстовые данные, из файлов, и из БД.

код умеет запихивать эти данные в JSON, и отдавать по HTTP.

текст такого вида

<mytag>Jack O'Neill</mytag>
прилетает клиенту в виде

&lt;mytag&gt;Jack O&#39;Neill&lt;/mytag&gt;

человек, пишущий бэкенд, говорит что никак невозможно это исправить, и клиент должен перекодировать. но мне чето не верится. может кто-то из местных сталкивался?

p.s. линукс при том, что вся эта невразумительная хрень запускается и работает через mono и .net core.

★★★★★

Последнее исправление: waker (всего исправлений: 1)

В чем проблема на клиенте декодировать? Насколько я понимаю часть символов таки придёться кодировать иначе они json поломают.

ddidwyll ★★★★
()
Ответ на: комментарий от ddidwyll

В чем проблема на клиенте декодировать?

ни в чем. интересует, как сделать чтобы не надо было декодировать.

Насколько я понимаю часть символов таки придёться кодировать иначе они json поломают.

неправильно понимаешь.

waker ★★★★★
() автор топика
Ответ на: комментарий от nikolnik

Покажи код контроллера. Хотя уже вангую, что бекендер поехавший.

я бы с радостью, но я даже не знаю куда в коде смотреть. не шарпист.

waker ★★★★★
() автор топика
Ответ на: комментарий от nikolnik

ну вот например

[HttpGet("{bucket_number}")]
public IActionResult BucketGetById(string bucket_number, [FromQuery] string BucketErrorState)
{
    var bucket = Bucket.BucketGetById(GetApiKey(), bucket_number, BucketErrorState);
    return Ok(bucket);
}
waker ★★★★★
() автор топика
Ответ на: комментарий от drsm

если втупую вставить

Судя по этому туториалу, не должно быть нужно, но, видимо, у ТС как-то по-другому контроллер и/или приложение настроено (хз, что там в ASP'е).

korvin_ ★★★★★
()

похоже, проблема решена.. как выяснилось после продолжительных экспериментов, данные в таком виде сидят в базе.

осталось понять, кто их так в базу запихал.

waker ★★★★★
() автор топика
Ответ на: комментарий от waker

Так да, по дефолту для json там используется JSON.NET, который ничего с контентом не делает.
Конечно можно в конфигурации в настройках сериализатора добавить свои конвертеры. Опций там на все случаи.

ritsufag ★★★★★
()
Ответ на: комментарий от waker

Вообще не надо было никаких «продолжительных экспериментов». Достаточно было поставить брейкпоинт в отладчике и посмотреть.

nikolnik ★★★
()
Ответ на: комментарий от nikolnik

Так это еще архаичный asp.net, который не core.

я не разбираюсь в сортах..

знаю, что какой-то код из этого проекта крутится на .netcore.

вероятно, сам бэкенд действительно на IIS.. в этом случае, сорри за оффтоп. и в любом случае всем спасибо за помощь.

Вообще не надо было никаких «продолжительных экспериментов». Достаточно было поставить брейкпоинт в отладчике и посмотреть.

для человека далекого от C#, это не так просто как могло бы показаться.

waker ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Здрасте, с разморозкой. C# opensource и портирован на линукс. Не говоря уже про моно.

ox55ff ★★★★★
()
Ответ на: комментарий от Unicode4all

C♯ — это как раз поганая мастдайка. Зачем это говно в линукс тащить? Если мозг сгнил, можно на goвне писать, например. Но не на мастайском же отродье!

anonymous
()
Ответ на: комментарий от anonymous

Исходники открыты. И CLR и либ и компилятора. На твоих любимых крестах написаны. Бери и форкай. Можешь поддержку КОИ-8 запилить вместо UTF-16 :)

Unicode4all ★★★★★
()
Ответ на: комментарий от Unicode4all

На твоих любимых крестах написаны

буээ

И чем тебе кресты не нравятся? Зачем это дерьмо использовать вместо?

anonymous
()
Ответ на: комментарий от anonymous

И чем тебе кресты не нравятся?

Мне, конечно, иногда нравится байтики перекладывать... Но только в ядре и околоядерных либах. В прикладухе этому не место. Поэтом тут либо c# либо Rust. А так как в ядре только сишка, то крестам просто нет места в моей жизни.

Unicode4all ★★★★★
()
Последнее исправление: Unicode4all (всего исправлений: 2)
Ответ на: комментарий от Unicode4all

Поэтом тут либо c# либо Rust.

Пздц.

anonymous
()
Ответ на: комментарий от waker

для человека далекого от C#, это не так просто как могло бы показаться.

Скорее для человека, не умеющего программировать. Ибо отладчики работают во всех иде одинаково, что для шарпа, что для жаваскрипта, что для питона.

nikolnik ★★★
()
Ответ на: комментарий от nikolnik

код не работает сам по себе - он прибит к базе, к файлам.

чтобы все поднять - нужно много дополнительного ставить и настраивать (типа MSSQL).

и даже если поднять - без собственно данных его не запустить.

ну и опять же, я был уверен, что бэкендщик все проверил (в т.ч. в отладчике на сервере), и уже от безысходности пошел спрашивать по форумам.

а так-то да, запустить hello world в отладчике любая обезьяна может.

waker ★★★★★
() автор топика
Ответ на: комментарий от Unicode4all

Пздц

А че? Java и Go мне её нравятся. Остаётся только C# и Rust. И скриптота на бидоне. А языкам с ручным управлением памятью и сегфолтами (в конце 2017, хаха) в прикладном ПО не место. Особенно в вебе. Серьёзно, те, кто пишут бэки на крестах нуждаются в психиатрическом обследовании.

Unicode4all ★★★★★
()
Последнее исправление: Unicode4all (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.