मेरे पास एक जटिल JSON है कि मैं जैक्सन JSON का उपयोग करके पार्स करने की कोशिश कर रहा हूं। लैट, एलएनजी मूल्यों को खींचने के लिए latLng ऑब्जेक्ट में कैसे पहुंचे इस बारे में मैं थोड़ा उलझन में हूं। यह JSON का हिस्सा है:जैक्सन जेएसओएन पार्सर का उपयोग: कॉम्प्लेक्स जेएसओएन?
{
"results": [
{
"locations": [
{
"latLng": {
"lng": -76.85165,
"lat": 39.25108
},
"adminArea4": "Howard County",
"adminArea5Type": "City",
"adminArea4Type": "County",
यह वही है मैं अब तक जावा में इसे बाहर खींच है:
public class parkJSON
{
public latLng _latLng;
public static class latLng
{
private String _lat, _lng;
public String getLat() { return _lat; }
public String getLon() { return _lng; }
}
}
और
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
parkJSON geo = mapper.readValue(parse, parkJSON.class);
System.out.println(mapper.writeValueAsString(geo));
String lat = geo._latLng.getLat();
String lon = geo._latLng.getLon();
output = lat + "," + lon;
System.out.println("Found Coordinates: " + output);
यह संकल्प इस तरह मैं भविष्य के संदर्भ के लिए ट्री मॉडल का उपयोग करके इस मुद्दे को हल किया:
ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
JsonNode rootNode = mapper.readTree(parse);
JsonNode firstResult = rootNode.get("results").get(0);
JsonNode location = firstResult.get("locations").get(0);
JsonNode latLng = location.get("latLng");
String lat = latLng.get("lat").asText();
String lng = latLng.get("lng").asText();
output = lat + "," + lng;
System.out.println("Found Coordinates: " + output);
मुझे पेड़ मॉडल विधि –
ऑब्जेक्टमैपर मैपर = नया ऑब्जेक्टमैपर(); // पुन: उपयोग कर सकते हैं, वैश्विक स्तर पर mapper.configure (DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, झूठी) साझा कर सकते हैं; जेसन नोड रूट नोड = mapper.readTree (पार्स); JsonNode firstResult = rootNode.get ("परिणाम")। (0) प्राप्त करें; जेसन नोड स्थान = firstResult.get ("स्थान")। (0) प्राप्त करें; जेसन नोड latLng = location.get ("latLng"); स्ट्रिंग लैट = latLng.get ("lat")। AsText(); स्ट्रिंग lng = latLng.get ("lng")। AsText(); –
यह बढ़िया है :-) अपनी परियोजना के साथ शुभकामनाएँ। – fvu