Не удается разобрать параметр JSON - PullRequest
0 голосов
/ 25 мая 2018

Я использую WebAPI для получения сообщения POST.Тело сообщения POST: {"datetime":"2017-01-06T20:40:44.2401244Z","filename":"somefilename.csv","datasourcename":"MyDataSource","error":"The uploaded file has no tags."}

Заголовок, включенный в POST: Content-type: application/json

Мой метод действия, который обрабатывает сообщение: [HttpPost]

public void SaveMessage([FromBody] string msg)
{ 
    MyModel w = JsonConvert.DeserializeObject<MyModel>(msg);
    db.MyModels.Add(w);
    db.SaveChanges();
}

Мой вопрос: как мне кодировать JSON, чтобы я мог его проанализировать?Я не могу изменить входящее сообщение.Что я могу сделать в своем методе, чтобы я мог его прочитать?Прямо сейчас msg всегда дай мне null.

1 Ответ

0 голосов
/ 25 мая 2018

Учитывая, что вы не можете контролировать отправляемые данные, убедитесь, что у вас есть модель, соответствующая требуемой объектной модели JSON

public class MyModel {
    public DateTime datetime { get; set; }
    public string filename { get; set; }
    public string datasourcename { get; set; }
    public string error { get; set; }
}

, и воспользуйтесь преимуществамивозможность привязки модели инфраструктуры веб-API и позволяет действию связывать строго типизированную модель из тела запроса.

[HttpPost]
public IHttpActionResult SaveMessage([FromBody] MyModel model) {
    if(ModelState.IsValid) {
        db.MyModels.Add(w);
        if(db.SaveChanges() > 0)
            return Ok();
    }
    return BadRequest();
}

Если при сохранении сообщения возникают проблемы, действие возвращает код состояния HTTP.400 Bad Request, в противном случае он вернет HTTP Status Code 200 OK.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...