Bra*_*che 3 java serialization simple-framework
我正在尝试使用简单的xml(http://simple.sourceforge.net/)序列化一个对象.对象设置非常简单:
@Root(name = "order_history")
public class OrderHistory {
@Element(name = "id", required = false)
public int ID;
@Element(name = "id_order_state")
public int StateID;
@Element(name = "id_order")
public int OrderID;
}
Run Code Online (Sandbox Code Playgroud)
问题是当我创建这个没有ID的类的新实例时:
OrderHistory newhistory = new OrderHistory();
newhistory.OrderID = _orderid;
newhistory.StateID = _stateid;
Run Code Online (Sandbox Code Playgroud)
我通过简单的xml序列化它:
StringWriter xml = new StringWriter();
Serializer serializer = new Persister();
serializer.write(newhistory, xml);
Run Code Online (Sandbox Code Playgroud)
它仍然在生成的xml中读取0:
<?xml version='1.0' encoding='UTF-8'?>
<order_history>
<id>0</id>
<id_order>2</id_order>
<id_order_state>8</id_order_state>
</order_history>
Run Code Online (Sandbox Code Playgroud)
我猜这是因为ID属性不为null,因为整数不能为null.但我真的需要摆脱这个节点,我宁愿不要手动删除它.
有人提出任何线索吗?
这里的'问题'是你使用原始类型(int,char,byte,...).
在Java中,您可以使用原始包装器对象(Integer,Chat,Byte),因此它们将被视为任何其他对象,并且可以为null.由于自动装箱,您可以将基元分配给它们的对象变体.
所以我建议改变你的模型如下:
@Root(name = "order_history")
public class OrderHistory {
@Element(name = "id", required = false)
public Integer ID;
@Element(name = "id_order_state")
public Integer StateID;
@Element(name = "id_order")
public Integer OrderID;
}
Run Code Online (Sandbox Code Playgroud)
而魔术!节点消失了!;-)
归档时间: |
|
查看次数: |
1245 次 |
最近记录: |