Как использовать JAP-значения в WebAPI, имеющие " - PullRequest
0 голосов
/ 01 ноября 2019
 public ActionResult<string> Post([FromBody] bot bot)  
{
   string jsonstr = JsonConvert.SerializeObject(bot);

   return jsonstr;
}
public class bot 
{
   public string bot_id { get; set; } 
   public string bot_uid { get; set; }             
}

Webapi post JSON Params

{
    "bot_id":"XX"XX"
}

если значение json имеет ", как я могу создать модель для публикации webapi?

1 Ответ

0 голосов
/ 01 ноября 2019

Если речь идет о возврате значений

Если в идентификаторе бота есть двойная кавычка, сериализатор json избежит его, и проблем быть не должно.

Я подозреваю, что вы неправильно читаетеJSON. Некоторые инструменты , включая окна Visual Studio Watch и Local Variables и окно консоли, могут отображать экранированные символы " без обратной косой черты и могут выглядеть так, как если бы строка была { "bot_id":"XX"XX" }, тогда как на самом деле это { "bot_id":"XX\"XX" }.

Кроме того, возможно ли, что XX"XX равен XX''XX (с двумя одинарными кавычками)?

В любом случае JsonCovert будет правильно сериализовать строку.

enter image description here

Если речь идет о потреблении json

{ "bot_id":"XX"XX" } - это недопустимый фрагмент json.

Я думаю, что здесь есть два варианта

Исправить json (предпочтительно)

Попросить автора исправить их полезную нагрузку.

Предварительная обработка json

Вы можете принять json, исправить известные проблемы и только затем передать его в десериализатор json.

ActionResult<string> Post([FromBody] string botJson)  // accept body as string
{
  string fixedJson = fixMyJson(botJson);
  var bot = JsonConvert.SerializeObject<Bot>();
  ...

или

async Task<ActionResult<string>> Post()
{
   HttpContent requestContent = Request.Content;
   string botJson = await requestContent.ReadAsStringAsync();

  string fixedJson = fixMyJson(botJson);
  var bot = JsonConvert.DeserializeObject<Bot>(fixedJson);
  ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...