अंत में मैंने पाया कि मेरा विन्यास ठीक है और हो सकता है जैक्सन जो प्वाइंट
को प्रबंधित नहीं कर सकता डेटा प्रकार सही ढंग से। इसलिए मैंने इसके JSON क्रमांकन और अक्रमांकन को अनुकूलित किया:
-
इन टिप्पणियों को हमारे
निर्देशांक
. में जोड़ें फ़ील्ड:@JsonSerialize(=PointToJsonSerializer.class का उपयोग करके)@JsonDeserialize(=JsonToPointDeserializer.class का उपयोग करके)
-
ऐसा सीरियलाइज़र बनाएं:
आयात करें .jackson.databind.SerializerProvider;import com.vividsolutions.jts.geom.Point;पब्लिक क्लास PointToJsonSerializer JsonSerializerका विस्तार करता है {@ ओवरराइड पब्लिक वॉयड सीरियलाइज़ (प्वाइंट वैल्यू, JsonGenerator jgen, SerializerProvider प्रदाता) IOException फेंकता है, JsonProcessingException {स्ट्रिंग jsonValueingException ="व्यर्थ"; कोशिश करें {अगर (मान! =शून्य) {डबल अक्षांश =value.getY (); डबल लोन =value.getX (); jsonValue =String.format("POINT (%s %s)", lat, lon); } } पकड़ें (अपवाद ई) {} jgen.writeString(jsonValue); }} -
ऐसा डिसेरिएलाइज़र बनाएं:
आयात करें .jackson.databind.JsonDeserializer;import com.vividsolutions.jts.geom.Coordinate;import com.vividsolutions.jts.geom.GeometryFactory;import com.vividsolutions.jts.geom.Point;import com.vividsolutions.PrecisionModel.geom.;पब्लिक क्लास JsonToPointDeserializer JsonDeserializerका विस्तार करता है {निजी फाइनल स्टैटिक ज्योमेट्री फैक्ट्री ज्योमेट्रीफैक्टरी =न्यू ज्योमेट्रीफैक्ट्री (नया प्रेसिजनमॉडल (), 26910); @Override सार्वजनिक बिंदु deserialize (JsonParser jp, DeserializationContext ctxt) IOException फेंकता है, JsonProcessingException {कोशिश {स्ट्रिंग टेक्स्ट =jp.getText (); अगर (पाठ ==शून्य || पाठ। लंबाई () <=0) शून्य वापस; स्ट्रिंग [] निर्देशांक =text.replaceFirst("POINT ?\\(", "").replaceFirst("\\)", "").split(" "); डबल लैट =डबल.पार्स डबल (निर्देशांक [0]); डबल लोन =डबल.पार्स डबल (निर्देशांक [1]); बिंदु बिंदु =ज्यामितिFactory.createPoint (नया निर्देशांक (अक्षांश, अकेला)); वापसी बिंदु; } पकड़ (अपवाद ई) {वापसी शून्य; } }}
हो सकता है कि आप यहां उपलब्ध इस धारावाहिक और इस deserializer का भी उपयोग कर सकते हैं।