2014-06-20 6 views
12

तो मैं एक एपीआई के साथ रेट्रोफिट के साथ काम कर रहा हूं जिसमें "सार्वजनिक" नामक एक चर है। मैं इसे अन्य सभी चरों की तरह स्वचालित रूप से मैप करने के बारे में कैसे जाउंगा।रेट्रोफिट मानचित्र जेसन वैरिएबल को कीवर्ड

उदाहरण:

@GET("/?filter=my_images") 
void getMyImages(
     @Query("client_id") String id, 
     @Query("api_key") String key, 
     Callback<ImageList> callback 
); 
public static class Image{ 
    int id; 
    String name; 
    String distribution; 
    String slug; 
    // Can't do this: 
    boolean public; 
} 

public static class ImageList{ 
    String status; 
    List<Image> images; 
} 

उदाहरण API परिणाम (JSON):

{ 
    "status": "OK", 
    "images": [ 
    { 
     "id": 1, 
     "name": "My first snapshot", 
     "distribution": "Ubuntu", 
     "slug": "ubuntu-12.10-x32", 
     "public": true 
    }, 
    { 
     "id": 2, 
     "name": "Automated Backup", 
     "distribution": "Ubuntu" 
    } 
    ] 
} 

उत्तर

35

रेट्रोफिट करने और JSON से क्रमांकन के लिए Gson उपयोग करता है।

जीसन एक क्षेत्र या विधि मैप किए जाने वाले कुंजी को बदलने के लिए @SerializedName एनोटेशन प्रदान करता है। आप अपने आरक्षित शब्द से निपटने के लिए इस का उपयोग कर सकते हैं:

@SerializedName("public") 
public String isPublic; 
+0

एक आकर्षण की तरह काम किया। मैं एनोटेशन से निपटने के लिए नया हूं, इसलिए मैं इस तरह की चीजों को देखना भूल जाता हूं। इससे अंडरस्कोर के साथ उन बदसूरत गैर-मानक चर से छुटकारा पाने में भी मदद मिलेगी। – JaySee

+0

@JaySee आप अपने 'GsonConverter' बनाते समय' setFieldNamingPolicy '/ 'setFieldNamingStrategy' विकल्पों पर भी एक नज़र डाल सकते हैं - इन्हें ऊंट किए गए JSON को ऊंट-कैज्ड गुणों के नामों (और इसके विपरीत) – swanson

+0

पर स्वचालित रूप से मानचित्रित करने के लिए उपयोग किया जा सकता है हाय जेक, क्या स्क्वायर से कोई भी इस प्रश्न पर कुछ संकेत दे सकता है: http://stackoverflow.com/questions/24467416/retrofit-cache-control-never-included-in-response? – zatziky

0

कृपया इस link है, जो एक neater समाधान है, अगर वहाँ प्रत्येक कुंजी में अंडरस्कोर हैं देखो।

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