我决定使用简单XML序列化,并且遇到了基本问题。我试图java.util.UUID
在这个小类中将类实例序列化为final字段:
@Root
public class Identity {
@Attribute
private final UUID id;
public Identity(@Attribute UUID id) {
this.id = id;
}
}
教程显示了如何通过注册转换器来序列化第三方对象,如下所示:
Registry registry = new Registry();
registry.bind(UUID.class, UUIDConverter.class);
Strategy strategy = new RegistryStrategy(registry);
Serializer serializer = new Persister(strategy);
serializer.write( object, stream );
适用于UUID的转换器非常简单:
public class UUIDConverter implements Converter<UUID> {
@Override
public UUID read(InputNode node) throws Exception {
return new UUID.fromString(node.getValue());
}
@Override
public void write(OutputNode node, UUID value) throws Exception {
node.setValue(value.toString());
}
}
但是,这种简单的代码对我不起作用,在引发带有UUID字段的序列化对象期间,抛出异常 java.util.UUID类的转换不支持 。
我已经尝试过一些与自定义类似的东西Matcher
(教程中没有介绍)对我有用:
Serializer serializer = new Persister(new MyMatcher());
serializer.write( object, stream );
和Matcher
类看起来像这样:
public static class MyMatcher implements Matcher {
@Override
@SuppressWarnings("unchecked")
public Transform match(Class type) throws Exception {
if (type.equals(UUID.class))
return new UUIDTransform();
return null;
}
}
public class UUIDTransform implements Transform<UUID> {
@Override
public UUID read(String value) throws Exception {
return UUID.fromString(value);
}
@Override
public String write(UUID value) throws Exception {
return value.toString();
}
}
问题:
谢谢。
我必须自己再回答一次:-)
来自支持列表的Simple XML项目负责人Niall Gallagher的建议:
“您可以使用Converter或Transform。对于UUID,带Matcher的Transform是最简单的选择。”
因此,我使用Transform<T>
/ Matcher
并对此感到满意。这不会改变以下事实:Converter<T>
不适用于我:-)
问题内容: 我正在尝试使用JSON(使用simplejson)序列化python对象列表,并收到以下错误:对象“不可JSON序列化”。 该类是一个简单的类,其字段只有整数,字符串和浮点数,并且从一个父超类继承相似的字段,例如: foo,bar是我上面提到的简单类型。唯一棘手的事情是,ChildClass有时具有一个字段,该字段引用另一个对象(类型不是ParentClass或ChildClass)。
本文向大家介绍C#使用XML序列化操作菜单的方法,包括了C#使用XML序列化操作菜单的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用XML序列化操作菜单的方法。分享给大家供大家参考。具体分析如下: 之前的一篇文章《C#递归读取XML菜单数据的方法》没使用XML序列化来操作菜单,而且发现那还有一个问题,就是在XML菜单的某个菜单节点前加上一些注释代码的就不能读取,现在使用XML
我在尝试“反序列化”对象时遇到以下错误: 我需要能够使用这个XStream库序列化/反序列化对象,甚至是那些没有参数构造函数的对象。
如果我使用jackson dataformat xml序列化JsonNode的ArrayList,它会产生以下结果: 我想把它读出来: 我尝试过使用自定义序列化程序,并确实给了我
问题内容: 我正在使用v2 Google Play服务中的Google的LatLng类。那个特定的类是最终的,不会实现。有什么办法可以使该类实现? 我不想声明 短暂的 。 问题答案: 不是,但是是,如果可以的话。如果没有,您可以自己处理序列化:
本文向大家介绍C#实现Xml序列化与反序列化的方法,包括了C#实现Xml序列化与反序列化的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#实现Xml序列化与反序列化的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。