5

त्रुटि im हो रही नामित कई JSON क्षेत्रों वाणी है:Gson क्रमबद्धता त्रुटि वर्ग com.activeandroid.DatabaseHelper mContext

मैं उपयोग कर रहा हूँ "java.lang.IllegalArgumentException वर्ग com.activeandroid.DatabaseHelper कई JSON क्षेत्रों mContext नामित वाणी" AndroidAnnotations RestClient मेरी वेब सेवा से डेटा खींचने और पीओजेओ में क्रमबद्ध करने के लिए। Serializations ORMLite का उपयोग करते समय ठीक काम किया लेकिन मैंने हाल ही में सक्रिय एंड्रॉइड को आजमाने का फैसला किया और अब मेरी कक्षा मॉडल बढ़ाती है। जीसन पेरेंट क्लास को क्रमबद्ध कर रहा है जिसका मेरा कोई नियंत्रण नहीं है। किसी भी तरह से मैं केवल कुछ फ़ील्ड या हो सकता है शामिल कर सकते हैं बस RestClient से सादा JSON लौट सकते हैं और क्रमबद्धता एक अलग तरह

@Rest(rootUrl = "http://stuff...com", converters = { GsonHttpMessageConverter.class }) 
    public interface RestClient { 
    @Get("/AndroidController/createFacebookUser?facebookToken={facebookToken}&catIds= {catIds}") 
    User createFacebookUser(String facebookToken,String catIds); 
} 

और उपयोगकर्ता मॉडल कर

@Data 
@Table(name = "Users") 
public class User extends Model { 
@Column(name = "SystemID") 
private String systemID; 
@Column(name = "Name") 
private String name; 
public List<GameEntry> items() { 
    return getMany(GameEntry.class, "Category"); 
} 

public User(){} 

}

उत्तर

6

Gson प्रदान करता है सीरियलाइजेशन और Deserialization से खेतों और प्रकार को छोड़ने के कई तरीके। Excluding Fields From Serialization and Deserialization पर एक नज़र डालें, विशेष रूप से @Expose एनोटेशन और उपयोगकर्ता द्वारा परिभाषित ExclusionStrategy का उपयोग करें।

3

मैं अपने खुद के Serializer जो जवाब यहाँ निम्नलिखित AbstractHttpMessageConverter बढ़ाया बनाया

Custom HttpMessageConverter with @ResponseBody to do Json things

कि मैं Gson बनाया और खेतों मैं धारावाहिक

private Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create(); 
चाहता था पर @Expose इस्तेमाल किया केवल एक चीज मैं बदल गया