C#MongoDb驱动程序不兼容GeoJSON?

时间:2017-06-19 21:59:25

标签: c# mongodb asp.net-web-api leaflet geojson

我正在使用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#使用的文章。所以有些事情很糟糕。

0 个答案:

没有答案