[英]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.