2014-11-05 12 views
5

Próba zwrócenia całkiem prostych danych GeoJSON. Znalazłem NetTopologySuite i skonfigurować prosty FeaturesCollection i próbował serializować go na ciąg GeoJSON tylko pojawia się następujący błąd:Problemy z serializowaniem NetTopologySuite FeaturesCollection do GeoJSON

"Self referencing loop detected for property 'CoordinateValue' with type 'GeoAPI.Geometries.Coordinate'. Path 'Features[0].Geometry.Coordinates[0]'."

pominie nagłówków klasowych, Punkt używa współrzędnych, który ma właściwość współrzędnych więc widzę, dlaczego istnieje odniesienie kołowe. Rzecz w tym, że większość (jeśli nie wszystkie) Geometrii wydają się używać Punktu, więc uniemożliwiłoby to kiedykolwiek serializację czegokolwiek ... chyba że czegoś mi brakuje.

Czy to błąd, czy też coś mi brakuje?

Testowane z tylko punkt i dostał ten sam błąd, więc tutaj jest kod na to:

using NTS = NetTopologySuite; 

var ret = new NTS.Geometries.Point(42.9074, -78.7911); 

var jsonSerializer = NTS.IO.GeoJsonSerializer.Create(); 

var sw = new System.IO.StringWriter(); 
jsonSerializer.Serialize(sw, ret); 

var json = sw.ToString(); 
+0

co to jest '' Create() metody? Nie widzę tego [tutaj] (https://github.com/NetTopologySuite/NetTopologySuite/blob/d6b9737798d2ed4d85864f04b9689bc4ff193344/NetTopologySuite.IO/NetTopologySuite.IO.GeoJSON/GeoJsonSerializer.cs). – dbc

+0

Jeśli używasz zmodyfikowanego konstruktora dla 'GeoJsonSerializer', musisz się upewnić, że [' CoordinateConverter'] (https://github.com/NetTopologySuite/NetTopologySuite/blob/d6b9737798d2ed4d85864f04b9689bc4ff193344/NetTopologySuite.IO/NetTopologySuite.IO.GeoJSON /Converters/CoordinateConverters.cs) jest przekazywana do niego, jak pokazano [tutaj] (https://github.com/NetTopologySuite/NetTopologySuite/blob/d6b9737798d2ed4d85864f04b9689bc4ff193344/NetTopologySuite.IO/NetTopologySuite.IO.GeoJSON/GeoJsonSerializer.cs). – dbc

+1

Create() jest częścią klasy nadrzędnej (podobno.) Przełączanie do domyślnego konstruktora działa idealnie. Możesz udzielić tej faktycznej odpowiedzi, a ja ją oznaczy. :) – CodeRedick

Odpowiedz

0

Zamiast po powrocie JSON już odcinkach, można użyć:

 return Content(sw.ToString, "application/Json"); 
Powiązane problemy