की बजाय खाली स्ट्रिंग पर खाली तत्व को deserializing, मैं अपने serializing/deserializing जरूरतों के लिए एक परियोजना में simpleframework (http://simple.sourceforge.net/) का उपयोग करता हूं, लेकिन यह अपेक्षित के रूप में काम नहीं करता है (ठीक है, कम से कम मैं कैसे उम्मीद करता हूं) खाली/शून्य स्ट्रिंग मानों से निपटने पर।सरल फ्रेमवर्क, शून्य
यदि मैं किसी रिक्त स्ट्रिंग मान वाले ऑब्जेक्ट को क्रमबद्ध करता हूं, तो यह एक खाली xml तत्व के रूप में दिखाया जाएगा।
तो यह
MyObject object = new MyObject();
object.setAttribute(""); // attribute is String
को क्रमानुसार के रूप में
<object>
<attribute></attribute>
</object>
लेकिन deserializing कि खाली विशेषता अशक्त के रूप में खत्म हो जाएगा, एक खाली स्ट्रिंग के बजाय।
क्या मैं सोचने के लिए पूरी तरह से बोनर हूं कि यह शून्य के बजाय खाली स्ट्रिंग होना चाहिए? और मैं पृथ्वी पर कैसे काम कर सकता हूं जिस तरह से मैं काम नहीं कर सकता?
ओह, और यदि मैं ऑब्जेक्ट को शून्य विशेषता के साथ क्रमबद्ध करता हूं तो यह <object/>
दिखा सकता है जैसा कि कोई उम्मीद कर सकता है।
संपादित करें:
जोड़ा गया एक सरल testcase मैं currenty
@Test
public void testDeserialization() throws Exception {
StringWriter writer = new StringWriter();
MyDTO dto = new MyDTO();
dto.setAttribute("");
Serializer serializer = new Persister();
serializer.write(dto, writer);
System.out.println(writer.getBuffer().toString());
MyDTO read = serializer.read(MyDTO.class, writer.getBuffer().toString(),true);
assertNotNull(read.getAttribute());
}
@Root
public class MyDTO {
@Element(required = false)
private String attribute;
public String getAttribute() {
return attribute;
}
public void setAttribute(String attribute) {
this.attribute = attribute;
}
}
संपादित चल रहा हूँ, फिक्स्ड:
किसी कारण से कोई रिक्त स्ट्रिंग यह करने के लिए पारित हो जाता है जब InputNode मान शून्य है । मैंने स्ट्रिंग के लिए कस्टम कन्वर्टर बनाकर समस्या का समाधान किया।
new Converter<String>() {
@Override
public String read(InputNode node) throws Exception {
if(node.getValue() == null) {
return "";
}
return node.getValue();
}
@Override
public void write(OutputNode node, String value) throws Exception {
node.setValue(value);
}
});
बहुत बहुत धन्यवाद !!! – Boy
यह एक आकर्षण की तरह काम करता है –