निम्नलिखित .json फ़ाइल को देखते हुए:
[
{
"name" : "New York",
"number" : "732921",
"center" : [
"latitude" : 38.895111,
"longitude" : -77.036667
]
},
{
"name" : "San Francisco",
"number" : "298732",
"center" : [
"latitude" : 37.783333,
"longitude" : -122.416667
]
}
]
निहित डेटा का प्रतिनिधित्व करने के लिए मैंने दो कक्षाएं तैयार कीं:
public class Location {
public String name;
public int number;
public GeoPoint center;
}
...
public class GeoPoint {
public double latitude;
public double longitude;
}
.Json फ़ाइल से सामग्री को पार्स करने के लिए मैं जैक्सन 2.2.x का उपयोग करता हूं और निम्नलिखित विधि तैयार करता हूं :
public static List<Location> getLocations(InputStream inputStream) {
ObjectMapper objectMapper = new ObjectMapper();
try {
TypeFactory typeFactory = objectMapper.getTypeFactory();
CollectionType collectionType = typeFactory.constructCollectionType(
List.class, Location.class);
return objectMapper.readValue(inputStream, collectionType);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
जब तक मैं center
संपत्ति छोड़ देता हूं तब तक सभी सामग्री को पार्स किया जा सकता है। हालाँकि, जब मैं भू-निर्देशांक को पार्स करने का प्रयास करता हूं तो मैं निम्नलिखित त्रुटि संदेश के साथ समाप्त होता हूं:
com.fasterxml.jackson.databind.JsonMappingException:
com.example.GeoPoint के उदाहरण deserialize नहीं कर सकते [START_ARRAY टोकन से] स्रोत: android.content.res.AssetManager>AssetInputStream@416a5850; पंक्ति: 5, कॉलम: 25]
(संदर्भ श्रृंखला के माध्यम से: com.example.Location ["केंद्र"])
center
अमान्य वस्तुओं की एक सरणी है। बदलने के लिए प्रयास करें [
और ]
साथ {
और }
चारों ओर JSON स्ट्रिंग में longitude
और latitude
इसलिए वे वस्तुओं हो जाएगा।