के साथ जैक्सन ऑब्जेक्टमैपर मैं JSON फ़ाइलों को पार्स करने के लिए एंड्रॉइड प्रोजेक्ट में जैक्सन 1.9.5 का उपयोग कर रहा हूं।मनमाने ढंग से JSON कुंजी
अब तक मैं किसी भी समस्या नहीं है, और फ़ाइलों ठीक निम्नलिखित कोड का उपयोग कर पार्स कर सकते हैं:
AssetManager mgr = getAssets();
ObjectMapper mapper = new ObjectMapper();
try {
InputStream ifp = mgr.open("detail_schema.json");
schema = mapper.readValue(ifp, DetailSchema.class);
} catch (IOException e) {
e.printStackTrace();
}
कहाँ DetailSchema वर्ग आदिम प्रकार और वर्गों का एक मिश्रण के होते हैं। अब मैं एक समस्या है जहाँ मैं निम्नलिखित की तरह कुछ JSON पार्स करने के लिए चाहता हूँ में चल रहा हूँ:
"fields": {
"Suburb": "Paddington",
"State": "NSW",
"Post Code": "2074",
"Lollipop": "Foo Bar Haz"
}
कहाँ मैं संभवतः नक्शा कुंजी पहले से पता नहीं कर सकते हैं (वे उपयोगकर्ता परिभाषित किया जा सकता है)। इस प्रकार, मुझे यकीन नहीं है कि संबंधित जावा क्लास कैसा दिखना चाहिए।
Ie, इस उदाहरण के लिए, यह दिखाई देगा:
public class MyClass {
public String Suburb;
public String State;
public String PostCode;
public String Lollipop;
}
लेकिन इस JSON फ़ाइल का एक और उदाहरण के लिए सही नहीं हो सकता। आदर्श रूप से मुझे जैक्सन को NameValuePair जैसे कुछ मानों को मैप करने के लिए कुछ तरीका चाहिए। मुझे संदेह है कि स्वचालित ऑब्जेक्ट मैपिंग इस मामले में एक विकल्प नहीं हो सकता है - क्या कोई इसे पुष्टि या अस्वीकार कर सकता है?
ग्रेट धन्यवाद! एक मानचित्र मेरे उद्देश्यों के लिए ठीक काम करेगा। – aaronsnoswell
आपको 'मैप' प्राप्त करने के लिए वास्तव में कस्टम क्लास का उपयोग करने की ज़रूरत नहीं है, आप जैक्सन को सीधे 'मानचित्र' इंटरफ़ेस के कार्यान्वयन के लिए deserialize कर सकते हैं, उदाहरण के लिए: 'मानचित्र jsonFields = mapper.readValue (ifp, हैश मैप .class) ' – brianmearns