2015-04-28 3 views
15

मैं एक सक्रिय एंड्रॉइड मॉडल को क्रमबद्ध करने के लिए जीसन का उपयोग कर रहा हूं। मॉडल क्लास में केवल प्राइमेटिव हैं, और जीसन को डिफ़ॉल्ट सेटिंग्स के साथ इसे क्रमबद्ध करने में कोई समस्या नहीं होनी चाहिए।जीसन और सक्रिय एंड्रॉइड: java.lang.Class serialize करने का प्रयास किया। एक प्रकार एडाप्टर रजिस्टर करने के लिए भूल गए?

java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: <MyClass>. Forgot to register a type adapter?

मैं वास्तव में नहीं बल्कि अपने मॉडल वर्गों में से हर एक के लिए एक प्रकार एडाप्टर बारे में नहीं होता, मैं कैसे इस समस्या के समाधान प्राप्त कर सकते हैं: हालांकि, जब मैं कोशिश, मैं त्रुटि मिलती है?

उत्तर

22

यह पता लगाया। बेशक, सक्रिय एंड्रॉइड का बेस मॉडल क्लास फ़ील्ड जोड़ रहा है जिसे डिफ़ॉल्ट रूप से क्रमबद्ध नहीं किया जा सकता है। इस प्रकार इन फ़ील्ड में, Gson के excluedFieldsWithoutExposeAnnotation() विकल्प का उपयोग करने पर ध्यान नहीं दिया जा सकता है:

@Table(name = "Foo") 
public class Foo extends Model { 

    @Expose 
    @Column(name = "Name") 
    public String name; 

    @Expose 
    @Column(name = "Sort") 
    public int sort; 

    ... 
} 
+0

कहाँ Gson gson = नए GsonB तरह ActiveAndroid के लिए आवेदन में Gson सेटिंग सेट करने के लिए रोकने के लिए । Uilder() excludeFieldsWithoutExposeAnnotation() बनाने()।; – ahmadalibaloch

13

एक आसान तरीका अपने Gson प्रारंभ करने में है:

Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); 
String json = gson.toJson(new Book()); 

इंगित करने के लिए कौन सी फ़ील्ड धारावाहिक जाना चाहिए @Expose टिप्पणी के साथ वर्ग को संशोधित नीचे के रूप में serializing, अंतिम क्षणिक या स्टेटिक क्षेत्रों

Gson gson = new GsonBuilder() 
      .excludeFieldsWithModifiers(Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC) 
      .serializeNulls() 
      .create(); 
+0

यह एकदम सही समाधान है। उपरोक्त समाधान "mId" null तो model.delete() बनाते हैं; शून्य सूचक अपवाद का कारण बनता है। –

+0

Gson gson = new GsonBuilder() को सक्रिय एंड्रॉइड के लिए एप्लिकेशन में जीसन सेटिंग कहां सेट करें। फ़ील्ड के बिना एक्सपोज़रएक्शन()।(); – ahmadalibaloch

+0

इसे सिंगलटन – mehdi

संबंधित मुद्दे