How to serialize ArrayList of objects?

时光毁灭记忆、已成空白 提交于 2019-12-22 19:42:28

问题


I want to serialize an arraylist of Item but it doesn't work....

my Item class extends Stuff class and has some subclasses.

all of my classes implement Serilalizable.

i have this part :

try{
// Serialize data object to a file
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("MyData.ser"));
out.writeObject(myData);
out.close();

// Serialize data object to a byte array
ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
out = new ObjectOutputStream(bos) ;
out.writeObject(myData);
out.close();

// Get the bytes of the serialized object
byte[] buf = bos.toByteArray();
} catch (IOException e) {
}

my classes :

public class Stuff implements Serializeable{
....
some protected fields
.
.
}

public class Item extends Stuff implements Serializable{
...
..
.
} and some subclasses of Item:

public class FirstItem extends Item implements Serializable{
...
}

public class SecondItem extends Item implements Serializable{
...
} ... I want to serialize an object contains ArrayList of <Item> that has objects of Item's subclasses (FirstItem,SecondItem,...)

i think informations are sufficient...

it's just a little mistake and now works correctly... I'm sorry for my stupid question.

Thank you for your answers.


回答1:


You can serialize class of ArrayList like this

public class MyData implements Serializable {

    private long id;
    private String title;
    private ArrayList<String> tags;
    ...

    public String getTitle() {
    }
}

And to create serializable

    ArrayList<MyData> myData = new ArrayList<MyData>();

try{
    // Serialize data object to a file
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("MyData.ser"));
    out.writeObject(myData);
    out.close();

    // Serialize data object to a byte array
    ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
    out = new ObjectOutputStream(bos) ;
    out.writeObject(myData);
    out.close();

    // Get the bytes of the serialized object
    byte[] buf = bos.toByteArray();
} catch (IOException e) {
}



回答2:


I'm taking a leap here that you are trying to serialize to something like json?

if so, you can use jackson (http://jackson.codehaus.org/)

final ObjectMapper mapper = new ObjectMapper();
try
{
    final String jsonString = mapper.writeValueAsString( _integrationSettings );
    // do something with the string...
}
catch( IOException e )
{
    // use a logger to output error
}

You can also deserialize with jackson as well...

A more detailed example here: http://blog.inflinx.com/2012/05/10/using-jackson-for-javajson-conversion/

Note: you can do similar for XML.



来源:https://stackoverflow.com/questions/23793885/how-to-serialize-arraylist-of-objects

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!