2011-10-28 352 views
1

這裏是我試過的代碼:如何使用Gson將oracle SDO_GEOMETRY對象轉換爲geoJson?

if(rs.next()){ 
    Gson gson = new Gson(); 
    STRUCT st = (STRUCT) rs.getObject(1); 
    JGeometry j_geom = JGeometry.load(st); 
    System.out.println(" gson.toJson(j_geom) "+gson.toJson(j_geom)); 
} 

但我收到此錯誤:

java.lang.IllegalArgumentException: NaN is not a valid double value as per JSON specification. To override this behavior, use GsonBuilder.serializeSpecialDoubleValues() method.

無法找到一個方法來梳理出來。

回答

0

您是否嘗試過使用GsonBuilder.serializeSpecialFloatingPointValues()?例外情況提到serializeSpecialDoubleValues(),似乎並不存在。

這JavaDoc的狀態:

Section 2.4 of JSON specification disallows special double values (NaN, Infinity, -Infinity). However, Javascript specification (see section 4.3.20, 4.3.22, 4.3.23) allows these values as valid Javascript values. Moreover, most JavaScript engines will accept these special values in JSON without problem. So, at a practical level, it makes sense to accept these values as valid JSON even though JSON specification disallows them.

+0

日Thnx ...是真正有用的...我的工作代碼: 如果(rs.next()){ \t \t GsonBuilder gsonBuilder =新GsonBuilder()。 serializeSpecialFloatingPointValues(); Gson gson = gsonBuilder.create(); \t \t STRUCT st =(STRUCT)rs.getObject(1); \t \t JGeometry j_geom = JGeometry.load(st); System.out.println(「gson.toJson(j_geom)」+ gson.toJson(j_geom)); \t \t } – Aneer