ArrayList <object>通过socket </object>发送

时间:2014-11-27 20:13:54

标签: java android sockets arraylist

我有一个ArrayList。我已经使用套接字连接Java Server和Android。我如何将ArrayList从Android发送到Java Server?

public class Person implements Serializable{
    private String name;
    private String number;

    public Person(String name, String nr){
        this.name = name;
        number = nr;

    }
    public String getName(){
        return name;

    }
    public String getNr(){
        return number;
    }

}

2 个答案:

答案 0 :(得分:3)

创建一个toString和一个fromString方法。或者甚至更好,使用GSON。

Gson是一个Java库,可用于将Java对象转换为其JSON表示。

http://code.google.com/p/google-gson/

答案 1 :(得分:2)

由于你的Person已经是Serializabe,你可以在byteArrayOutpuStream之上使用ObjectOutputStream。并传输字节数组。 如果您的服务器知道类Person(因为它已连接您的jar)。它可以读取字节数组并调用ObjectInputStream。

示例:

List<Person> persons = new ArrayList<Persons>();
// TODO fill persons.

ByteArrayOutputStream bao = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bao);
oos.writeObject(persons);
oos.close();

byte[] byteToTransfer = oos.getBytes();
// transfer

在服务器端:

byte[] bytesFromSocket = ....;
ByteArrayInputStream bis = new ByteArrayInputStream(bytesFromSocket);
ObjectInputStream ois = new ObjectOutputStream(bis);
List<Persons> persons = (List<Persons>) ois.readObject(persons);

一旦理解了这一点,请查看更完整的代码:

Java sockets - Custom Objects Sending