簡體   English   中英

IEnumerable的 <GeoJsonFeature<GeoJson2DGeographicCoordinates> &gt; .ToJson()由於對象ID產生無效的JSON?

[英]IEnumerable<GeoJsonFeature<GeoJson2DGeographicCoordinates>>.ToJson() produces invalid JSON due to Objectid?

我正在嘗試使用mongodb c#驅動程序從以GeoJson格式存儲的GIS對象集合中生成json。 然后,我將該數據發送到我的頁面,並使用GeoJson.js通過Google Maps api映射數據。 這是我的控制器方法的簡化版本:

public JavaScriptResult GetMapData( IEnumerable<OilGasLeaseModel> leases )
{
  var client = new MongoClient(ConfigurationManager.ConnectionStrings["MongoDB"].ConnectionString);
  var server = client.GetServer();
  var db = server.GetDatabase("GIS");
  var collection = db.GetCollection<GeoJsonFeature<GeoJson2DGeographicCoordinates>>("Sections");

  HashSet<string> sections = new HashSet<string>();
  foreach (OilGasLeaseModel ogl in leases)
  {
    foreach (TractModel tract in ogl.Tracts)
    {
      sections.Add(String.Format("{0}-T{1}-R{2}", tract.sec.TrimStart('0'), tract.twn, tract.rng));
    }
  }

  //var query = Query<GeoJsonFeature<GeoJson2DGeographicCoordinates>>.Where(x => x.Properties["SECTION"].ToString() == "20-T15N-R05W" );
  var result = collection.FindAll().Where(x => sections.Contains( x.Properties["SECTION"].AsString  ) );
  return JavaScript(result.ToJson());
}

此代碼生成的JSON如下所示:

[{ "type" : "Feature", "geometry" : { "type" : "Polygon", "coordinates" : [[[-97.602787016351414, 35.885755787882609], [-97.602844545557346, 35.881887460152967], [-97.6029024469591, 35.877283343404464], [-97.602876585570769, 35.871308155111066], [-97.616576075082719, 35.8711729277396], [-97.620908123078735, 35.871311565900726], [-97.620823160030156, 35.878294258522239], [-97.620823169953638, 35.881567848717381], [-97.620766650314266, 35.88571083185078], [-97.613535371346188, 35.88577902182432], [-97.611143428162308, 35.885803641463667], [-97.602787016351414, 35.885755787882609]]] }, "properties" : { "Shape_area" : 2615635.67494, "SECT_NUM" : "10", "SECTION" : "10-T16N-R4W", "EAST_WEST" : "W", "NORTH_SOUT" : "N", "Order_" : 0, "RANGE" : "4", "Shape_len" : 6453.04509751, "STR" : "10-16N-04W", "OBJECTID_1" : 2071, "TOWNSHIP" : "16", "MERIDIAN" : "IM" }, "_id" : ObjectId("52ddb2399f3a3124806d5a65") }, ... ]

問題是,這顯然不是有效的JSON,因為出現錯誤:

Uncaught ReferenceError: Objectid is not defined

當我嘗試使用生成的JSON作為JavaScript時。

有什么方法可以使ToJson擴展方法將_id轉換為字符串,而不是ObjectId(“ 52ddb2399f3a3124806d5a65”)嗎?

任何提示將不勝感激!

好的,事實證明,Mongodb c#驅動程序使此操作非常容易:

更換:

return JavaScript(result.ToJson());

有:

return JavaScript(result.ToJson(new JsonWriterSettings { OutputMode = JsonOutputMode.Strict }));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM