मैं अपना कोड सरल बनाने की कोशिश कर रहा हूं: मैं कुंजी और मान (सभी तार) को स्टोर करना चाहता हूं।जैक्सन - मानचित्र में रिकर्सिव पार्सिंग <स्ट्रिंग, ऑब्जेक्ट>
मैं वास्तव में इसे संग्रहीत करने के लिए Map<String, Object>
का उपयोग कर रहा हूं। टोपी रास्ता Object
एक मूल्य (String
) या एक नया नोड (Map<String, Object>
) हो सकता है।
मैं इस कोड को कैसे सरल बना सकता हूं? एक पुनरावर्ती समारोह अच्छा होगा।
try {
JsonParser jsonParser = new JsonFactory().createJsonParser(content);
jsonParser.nextToken();
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String key = jsonParser.getCurrentName();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
mData.put(key, new HashMap<String, Object>());
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String subkey = jsonParser.getCurrentName();
jsonParser.nextToken();
if (jsonParser.getCurrentToken() == JsonToken.START_OBJECT) {
Map<String, Object> subdata = (Map<String, Object>) mData.get(key);
subdata.put(subkey, new HashMap<String, Object>());
while (jsonParser.nextToken() != JsonToken.END_OBJECT) {
String subsubkey = jsonParser.getCurrentName();
jsonParser.nextToken();
Map<String, Object> subsubdata = (Map<String, Object>) subdata.get(subkey);
LogHelper.d("data[" + key + "][" + subkey + "][" + subsubkey + "]=" + jsonParser.getText());
subsubdata.put(subsubkey, jsonParser.getText());
}
}
else {
LogHelper.d("data[" + key + "]=" + jsonParser.getText());
mData.put(key, jsonParser.getText());
}
}
}
else {
LogHelper.d("data[" + key + "]=" + jsonParser.getText());
mData.put(key, jsonParser.getText());
}
}
}
else {
LogHelper.d("status=" + jsonParser.getText());
mStatus = jsonParser.getText();
}
}
}
catch (IllegalArgumentException e) {
error("0", "IllegalArgumentException: " + e.getMessage());
}
catch (JsonParseException e) {
error("0", "IOException: " + e.getMessage());
}
catch (IOException e) {
error("0", "IOException: " + e.getMessage());
}
दरअसल, 'जैक्सन-कोर' और 'जैक्सन-मैपर' पुस्तकालयों का उपयोग करके आपका कोड केवल 3 लाइनों के साथ काम करता है! धन्यवाद! – shkschneider