Estoy usando Gson para serializar un class llamado User.class que extiende Externalizable

public class User implements Externalizable {

    String username = "testname";        

    @Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {}

    @Override
    public void writeExternal(ObjectOutput out) throws IOException {
      out.writeObject(username);
    }
}

La salida en el archivo es

{
   user: {}
}

En lugar de

{
   user: "testname"
}
0
MyNameIsHans 30 ene. 2016 a las 02:14

3 respuestas

La mejor respuesta

Usando

Gson gson = new GsonBuilder().create();
gson.toJson(new User(), System.out);

Genera la siguiente salida:

{"username":"testname"}

Usando

<dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.4</version>
    </dependency>

¿Por qué espera usuario : "testname" en lugar de username : "testname"?

1
Rainer Montag 29 ene. 2016 a las 23:54

Agrega un constructor como este:

   public User(String username) {
    this.username = username;
     }

Crea un método llamado getUsername():

  public String getUsername() {
    return username;
    }

Y aquí está tu código:

   @Override
   public void writeExternal(ObjectOutput out) throws IOException {
     out.writeObject(username);
   }

Para obtener más información, consulte este ejemplo

0
Abdelhak 29 ene. 2016 a las 23:53

Debe establecer el nombre de usuario en el objeto de usuario. Asegúrese de que esté pegado al objeto.

Agregue un constructor y cambie la clase de la siguiente manera:

private String username;

public User(){
 this.username = "testuser";
}
0
Pritam Banerjee 29 ene. 2016 a las 23:32