我正在使用Leaflet.js,ASP.Net Core webapi服务层和MongoDB构建一个Web应用程序来保存数据。
似乎MongoDb的C#驱动程序没有正确地序列化或反序列化GeoJSON对象。
理想情况下,我可以将GeoJSON对象直接从leaflet发布到webapi控制器,该控制器应该简单地将此对象传递到我的存储库中,以便在MongoDb中保持持久性。但是它产生null(这是类错配的标准行为 - 来自webapi [FromBody]
模型绑定 - 因为它不会抛出异常)。
所以要测试它的期望(C#MongoDb驱动程序对象序列化为什么)我创建了一个直接返回GeoJSON对象的服务,它返回以下内容 - 我认为它不是有效的GeoJSON:
"location":{
"coordinates":{
"values":[-121.97620341421, 37.503287248864],
"longitude":-121.97620341421,
"latitude":37.503287248864 },
"type":7,
"boundingBox":null,
"coordinateReferenceSystem":null,
"extraMembers":null },
AFAIK的类型属性应该是" Point"并且coordinates属性应该只包含long / lat值的数组 - 而不是具有3个属性的对象!
我的C#属性如下所示:
public GeoJsonPoint<GeoJson2DGeographicCoordinates> location { get; set; }
从我的传单前端发送的对象如下所示:
"location": {
"type": "Point",
"coordinates": [
-105.01621,
39.57422
]
}
这是我看过的MongoDb使用和使用传单的正确GeoJSON格式..即使是使用Mongo shell插入Mongo然后通过C#使用的文章。所以有些事情很糟糕。