Tag: 序列化

使用Flexjson更改属性名称

我使用FlexJson进行序列化,唯一的问题是它生成字段名称小写,而我需要它们以大写字母开头: class Person { String name; public String getName() { return name;} } 序列化时,字段序列化为name ,而我需要将其Name为Name 。 如何指定输出字段名称? 我可以使用一些属性来指定所需的序列化名称吗?

Java:将大量数据序列化为单个文件

我需要将大量数据(大约2gig)的小对象序列化到一个文件中,以便稍后由另一个Java进程处理。 表现很重要。 谁能建议一个好的方法来实现这个目标?

无法序列化/反序列化ArrayList

我正在尝试使用内部对象序列化和反序列化数组列表: HairBirt param = new HairBirt(); param.setName(“name”); param.setValue(2.3f); HairBirt param2 = new HairBirt(); param2.setName(“name2”); param2.setValue(2.4f); ArrayList list = new ArrayList(); list.add(param); list.add(param2); ByteArrayOutputStream bos = null; try { bos = new ByteArrayOutputStream(); ObjectOutputStream obj_out = new ObjectOutputStream(bos); obj_out.writeObject(list); } catch (IOException e) { e.printStackTrace(); } String encoded = bos.toString(); try { encoded = URLEncoder.encode(encoded, “UTF-8”); […]

为什么基类(不实现Serializable)如果其子类实现Serializable,则应该没有参数构造函数?

我正在阅读Serializable接口的文档,其中我找到以下几行: 为了允许序列化非可序列化类的子类型,子类型可以承担保存和恢复超类型的公共,受保护和(如果可访问)包字段的状态的责任。 只有当它扩展的类具有可访问的no-arg构造函数来初始化类的状态时,子类型才可以承担此责任。 如果不是这种情况,则声明类Serializable是错误的。 将在运行时检测到错误。 但是,基类的无参数构造函数在恢复对象状态方面的作用是什么?

如何使用GSON反序列化Map

我是GSON的新手,并获得了这种格式的JSON响应(只是一个更简单的例子,因此值没有意义): { “Thomas”: { “age”: 32, “surname”: “Scott” }, “Andy”: { “age”: 25, “surname”: “Miller” } } 我希望GSON使它成为一个Map,PersonData显然是一个Object。 名称字符串是PersonData的标识符。 正如我所说,我对GSON很新,只尝试过类似的事情: Gson gson = new Gson(); Map decoded = gson.fromJson(jsonString, new TypeToken<Map>(){}.getType()); 但这引发了错误: Exception in thread “main” com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING at line 1 column 3141 任何帮助表示赞赏:)

如何在Java中序列化generics类?

我已经开始阅读Java中的序列化以及其他语言中的一些,但是如果我有一个generics类并且我想将它的实例保存到文件中该怎么办。 代码示例 public class Generic { private T key; public Generic() { key = null; } public Generic(T key) { this.key = key; } } 什么是保存这种对象的最佳方法? (当然,在我真正的通用课程中还有更多,但我只是想知道实际的想法。)

为什么jackson多态序列化在列表中不起作用?

jackson正在做一些真正奇怪的事情,我找不到任何解释。 我正在进行多态序列化,当一个对象独立时它可以很好地工作。 但是,如果将相同的对象放入列表并对列表进行序列化,则会删除类型信息。 它丢失类型信息的事实将导致人们怀疑类型擦除。 但这是在列表内容的序列化过程中发生的; jackson所要做的就是检查它正在序列化的当前对象以确定其类型。 我用Jackson 2.5.1创建了一个例子: import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonSubTypes.Type; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeName; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.List; public class Test { @JsonIgnoreProperties(ignoreUnknown = true) @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY) @JsonSubTypes({ @Type(value = Dog.class, name = “dog”), @Type(value = Cat.class, name = “cat”)}) public interface Animal […]

Hibernate和Serializable实体

有谁知道是否有一个框架能够从实体类中去除Hibernate集合以使它们可序列化? 我看了一下BeanLib,但它似乎只是做了实体的深层副本,而不允许我为我的实体类中的集合类型指定实现映射。 BeanLib目前不能与Hibernate 3.5和Spring 3一起使用(我确实修改了源代码并且能够使它工作但我宁愿不这样做)。 吉利德似乎是一种选择,但似乎相当具有侵略性。 我宁愿使用一个简单的深层复制框架,而不是将另一个框架编织到我的实体和DAO类中。 我已经尝试使用XStream与自定义CollectionConverter和MapConverter成功,但是…它是XStream,我真的不想将我的实体转换为XML,然后从内存中的XML转换回来。 这是一个糟糕的解决方案。 我是否只需创建自己的框架,其行为类似于XStream减去所有XML的东西? 我的技术堆栈是:GWT 2.0.4,GWT-Dispatch,Spring 3.0.1和Hibernate 3.5.2。 我的XStream解决方案: XStream xstream = new XStream(); xstream.addDefaultImplementation(java.util.ArrayList.class, org.hibernate.collection.PersistentList.class); xstream.addDefaultImplementation(java.util.HashMap.class, org.hibernate.collection.PersistentMap.class); xstream.addDefaultImplementation(java.util.HashSet.class, org.hibernate.collection.PersistentSet.class); xstream.addDefaultImplementation(java.util.ArrayList.class, org.hibernate.collection.PersistentBag.class); Mapper mapper = xstream.getMapper(); xstream.registerConverter(new HibernateCollectionConverter(mapper)); xstream.registerConverter(new HibernateMapConverter(mapper)); String xml = xstream.toXML(entity); Entity newEntity = (Entity) xstream.fromXML(xml);

序列化对象解密(和其他字节字段)期间的StreamCorruptedException

我的软件在解密过程中引发了StreamCorruptedException:我的密码是AES / CBC / PKCS5Padding,我的密钥是用PBKey Derivation方法获得的,所以我需要创建一个salt来生成AES128密钥。 我的目标是获取以这种方式形成的文件: (我将删除exception管理代码以提高可读性)我的密码: char[] password = passwordString.toCharArray(); SecureRandom random = new SecureRandom(); byte salt[] = new byte[SALT_BYTES]; random.nextBytes(salt); SecretKeyFactory factory = SecretKeyFactory.getInstance(“PBKDF2WithHmacSHA256”); KeySpec keySpec = new PBEKeySpec(password, salt, ITERATION, AES_KEY_BITS); SecretKey tmp = factory.generateSecret(keySpec); SecretKey secretKey = new SecretKeySpec(tmp.getEncoded(), “AES”); Cipher cipher = Cipher.getInstance(“AES/CFB/PKCS5Padding”); cipher.init(Cipher.ENCRYPT_MODE, secretKey); FileOutputStream fout = null; […]

用不同的语言反序列化

log4j网络适配器将事件作为序列化java对象发送。 我希望能够捕获此对象并使用其他语言(python)对其进行反序列化。 这可能吗? 注意网络捕获很容易; 它只是一个TCP套接字并在流中读取。 困难在于反序列化部分