2015-10-06 9 views
7

मैं JSONAPI उपयोग कर रहा हूँ, इसलिए मैं कुछ वर्गों, लेकिन सभी कक्षाएं, जैसे रैप करने के लिए की जरूरत है:जैक्सन SerializationFeature.WRAP_ROOT_VALUE को अक्षम/सक्षम कैसे करें?

{"users": {"aKey": "aValue"}} // wrapped. 
{"aKey": "aValue"} // not wrapped. 

गतिशील या वर्ग ही ?,

मैं से Tis सुविधा को अक्षम करने के लिए एक रास्ता है इसे आजमाएं:

  • https://stackoverflow.com/a/27688284/255463, इस कक्षा को कभी नहीं कहा जाता है।
  • @JsonRootName (value = ""), या तो काम नहीं करता है।

मैं यह कर रहा हूँ/खोलना लपेटो करने के लिए:

ObjectMapper objectMapper = new ObjectMapper(); 
objectMapper.enable(SerializationFeature.WRAP_ROOT_VALUE); 
objectMapper.enable(DeserializationFeature.UNWRAP_ROOT_VALUE); 
objectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); 

JacksonConverterFactory jacksonConverterFactory = JacksonConverterFactory.create(objectMapper); 

OkHttpClient okHttpClient = new OkHttpClient(); 
okHttpClient.interceptors().add(new LoggingInterceptor()); 

Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(baseUrl) 
      .client(okHttpClient) 
      .addConverterFactory(jacksonConverterFactory) 
      .build(); 

मैं POJOs में से कुछ है कि सुविधा को अक्षम जरूरत है कि संभव है, ?.

धन्यवाद।

+0

क्या आपको ऐसा करने का कोई तरीका मिला? – FlavienBert

+0

@FlavienBert no,: एस – nebiros

उत्तर

1

वर्तमान में, नहीं। यह FasterXML/jackson-databind#1022 के तहत ट्रैक किया गया है, एक वर्कअराउंड के रूप में, आप रूट सक्षम कनवर्टर फैक्ट्री और बिना किसी के दो अलग-अलग रेट्रोफिट उदाहरण बना सकते हैं।