Я боролся с моим первым проектом C#. Это контроллер веб-api, который получит сообщение от AngularJS. Сообщение появляется, но, похоже, имеет дополнительный набор скобок в объекте JSON (значение щелчка правой кнопкой мыши/копирование в vs 2015). Я пробовал различные методы, но каждый раз, когда я десериализую объект JSON, я получаю нулевые значения.MVC WEB API Controller C# JSON Deserialize не работает
public class LocationsTestController : ApiController
{
[System.Web.Http.HttpPost]
[Route("")]
public IHttpActionResult Post(object json)
{
string sjson = json.ToString();
Coords oCoords = JsonConvert.DeserializeObject<Coords>(sjson);
DBEntities db = new DBEntities();
db.spUpdateLocation(User.Identity.Name, oCoords.latitude.ToString(), oCoords.longitude.ToString());
db.SaveChanges();
return Ok(oCoords.latitude); //return trash data for now
}
}
Вот мой JSON, скопированный с объекта, полученного почтой.
{{
"coords": {
"latitude": 43.445969749565833,
"longitude": -80.484091512936885,
"altitude": 100,
"accuracy": 150,
"altitudeAccuracy": 80,
"heading": 38,
"speed": 25
},
"timestamp": 1442113213418
}}
Я попытался отображение в рамках сущности, но проблема в том, что мне нужно добавить авторизованное имя пользователя на объект JSON, как я не хочу верить, что передается в API.
Любая помощь будет высоко оценена.
Это сработало.Вот модель, которую я использовал: public class Rootobject { public Coords coords {get; задавать; } public long timestamp {get; задавать; } } общественный класс Coords { public float latitude {get; задавать; } public float longitude {get; задавать; } public int heightitude {get; задавать; } public int precision {get; задавать; } public int altitudeAccuracy {get; задавать; } public int heading {get; задавать; } public int speed {get; задавать; } } – Kevin