मेरे पास कुछ JSON आ रहा है (मेरे पास JSON के भीतर संरचना और/या नामकरण को बदलने का कोई नियंत्रण या क्षमता नहीं है ... इस प्रश्न में ध्यान में रखना महत्वपूर्ण है) जिसमें "फ्लैट" संरचना समान है इस:जीसन फ्लैट जेसन ने नेस्टेड ऑब्जेक्ट्स को सीरियलाइज़र/डेसेरियलाइज़र की आवश्यकता है?
public class Settings {
@SerializedName("name")
private String _name;
@SerializedName("email")
private String _emailAddress;
@SerializedName("box_background_color")
private String _boxBackgroundColor;
@SerializedName("box_border_color")
private String _boxBorderColor;
@SerializedName("box_text_color")
private String _boxTextColor;
...
}
{
"name": "...",
"email": "...",
"box_background_color": "...",
"box_border_color": "...",
"box_text_color": "...",
...
}
अब, मैं सिर्फ एक सरल उद्देश्य यह है कि सब कुछ फ्लैट, इसलिए की तरह रहता है बना सकते हैं
हालांकि, मैं box
सेटिंग्स से जुड़ी सब कुछ अपनी कक्षा में होना चाहता हूं (BoxSettings
)। यह और अधिक की तरह मैं क्या चाहते है:
public class Settings {
@SerializedName("name")
private String _name;
@SerializedName("email")
private String _emailAddress;
private BoxSettings _boxSettings
...
}
public class BoxSettings {
@SerializedName("box_background_color")
private String _boxBackgroundColor;
@SerializedName("box_border_color")
private String _boxBorderColor;
@SerializedName("box_text_color")
private String _boxTextColor;
...
}
मुझे पता है कि अगर इस तरह के JSON संरचित किया गया था कि बॉक्स सेटिंग्स तो नेस्ट गया यह पूरा करने के लिए जो मैं चाहता आसान होगा, फिर भी, मैं डॉन JSON की संरचना को बदलने की क्षमता नहीं है, इसलिए कृपया यह सुझाव न दें कि (अगर मैं कर सकता तो मैं करूँगा)। एक पूरे TypeAdapter एक ही रास्ता पूरा करने के लिए मैं क्या चाहते हैं या मैं अभी भी एनोटेशन के साथ इस का सबसे पूरा कर सकते हैं बनाने है:
मेरा प्रश्न है? यदि यह एकमात्र तरीका नहीं है, तो मैं JSON को बदले बिना इसे और कैसे पूरा कर सकता हूं?
निम्नलिखित मैं क्या द्वारा "एक पूरी TypeAdapter बनाने" मतलब का एक उदाहरण है:
public class SettingsTypeAdapter implements JsonDeserializer<Settings>, JsonSerializer<Settings> {
@Override
public JsonElement serialize(Settings src, Type typeOfSrc, JsonSerializationContext context) {
// Add _name
// Add _emailAddress
// Add BoxSettings._boxBackgroundColor
// Add BoxSettings._boxBorderColor
// Add BoxSettings._boxTextColor
return jsonElement;
}
@Override
public Settings deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
// Read _name
// Read _emailAddress
// Read BoxSettings._boxBackgroundColor
// Read BoxSettings._boxBorderColor
// Read BoxSettings._boxTextColor
return settings;
}
}
आप किसी भी समाधान मिला? – Umair
@Umair नहीं, अभी तक नहीं। अब भी इंतज़ार। माफ़ कीजिये। – bsara