.net 4.5-在c#中的Web API 2控制器中反序列化geoJSON

本文关键字:控制器 反序列化 geoJSON API Web 中的 net | 更新日期: 2023-09-27 18:00:23

我需要传递一些JSON,包括一个geoJSON对象,并将其取消序列化为这个模型:

public class GeoTag
    {
        public Guid ID { get; set; }
        public DbGeography Geography { get; set; }
        public string Tag { get; set; }
        public Guid UserID { get; set; }
    }

我在.NET 4.5中使用Web API 2控制器,如下所示:

[ResponseType(typeof(GeoTag))]
        public async Task<IHttpActionResult> PostQuestion(GeoTag geoTag)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            //Do some stuff
            return CreatedAtRoute("DefaultApi", new { id = geoTag.ID }, geoTag);
        }

这是我的JSON:

{
"Tag": "food",
"Geography": {
"coordinates": ["-0.1337","51.50998"],
"type": "Point"
}

}

我在获取控制器方法来解释Geography时遇到问题;它返回的信息是:

Unable to find a constructor to use for type System.Data.Spatial.DbGeography. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'Geography.coordinates', line 4, position 19.

有人知道我所做的是否可能,或者我的方法是否错误吗?

.net 4.5-在c#中的Web API 2控制器中反序列化geoJSON

像这样改变你的Json,

{ "Tag": "food", "Geography": { "coordinates": ["-0.1337","51.50998"], "type": "Point" } }

它会起作用..:)