2014-05-14 3 views
8

वहाँ किसी भी तरह से किसी वर्ग के सेट तरीकों, जब Gson के fromJson पद्धति का उपयोग करके उपयोग किया जाता है है?सेटर्स का उपयोग करना संभव है जब जीसन एक JSON deserializes?

मैं क्योंकि लक्षित वर्ग एक ट्रिम किया जाता है के हर String वैश्विक चर के लिए यह करने के लिए करना चाहते हैं।

वहाँ इस के लिए किसी भी GSON एपीआई एनोटेशन है?

मुझे पता है कि GSON कस्टम serializers/deserializers लिखने की क्षमता प्रदान करता है, लेकिन मैं अगर वहाँ एक और तरीका है इस लक्ष्य को हासिल करने के लिए है जानना चाहूंगा हूँ।

उत्तर

1

मैं एक JsonDeserializer<String> लागू किया और GsonBuilder पर यह दर्ज किया। इसलिए, सभी स्ट्रिंग फ़ील्ड प्राप्त होने के लिए, जीसन मूल्य को deserialize करने के लिए मेरे StringGsonTypeAdapter का उपयोग करेगा।

import static net.hugonardo.java.commons.text.StringUtils.normalizeSpace; 
import static net.hugonardo.java.commons.text.StringUtils.trimToNull; 

final class StringGsonTypeAdapter implements JsonDeserializer<String> { 

    private static final StringGsonTypeAdapter INSTANCE = new StringGsonTypeAdapter(); 

    static StringGsonTypeAdapter instance() { 
     return INSTANCE; 
    } 

    @Override 
    public String deserialize(JsonElement jsonElement, Type type, 
     JsonDeserializationContext jsonDeserializationContext) throws JsonParseException { 
     return normalizeSpace(trimToNull(jsonElement.getAsString())); 
    } 
} 

... और मेरे GsonBuilder:

Gson gson = new GsonBuilder() 
    .registerTypeAdapter(String.class, StringGsonTypeAdapter.instance()) 
    .create()) 

नीचे मेरी कोड है

13

नहीं, वहाँ नहीं है। जीसन मुख्य रूप से उदाहरण क्षेत्रों पर प्रतिबिंब द्वारा काम करता है। इसलिए यदि आप जैक्सन में जाने की योजना नहीं बना रहे हैं जिसमें इस सुविधा है तो मुझे लगता है कि आपके पास अपने सेटर्स को कॉल करने का सामान्य तरीका नहीं हो सकता है। तो इसके लिए कोई टिप्पणी नहीं है।

लेकिन

अपने विशिष्ट प्राप्त करने के लिए आप कर सकता है की जरूरत है:

  1. बारे में अपने स्वयं के कस्टम TypeAdapter या
  2. एक निर्माता स्ट्रिंग आप ट्रिम और एक कस्टम बनाने का इरादा है कि बनाने InstanceCreator या
  3. JsonObject के रूप में अपने JSON पार्स, तार के कुछ प्रसंस्करण और फिर पार्स पूर्णांक के लिए स्रोत के रूप में उस वस्तु का उपयोग ओ आपकी कक्षा

जब तक आप कुछ कोड पोस्ट करते हैं या अपने डेटा/JSON के बारे में जानकारी देते हैं, तो मैं आपको अधिक संकेत प्रदान कर सकता हूं।

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