How to define a data structure in Json, with the name of the object at the top of the structure?

Asked

Viewed 65 times

1

I am working on json and I really need to get this structure:

{

"Identidade":

       [ 

           {  "numero": 1704,  "numeroFinal": 1804,  "id": 28 }, 
           {  "numero": 1806,  "numeroFinal": 1905,  "id": 28 }, 
           {  "numero": 1705,  "numeroFinal": 1706,  "id": 29 }, 
           {  "numero": 1707,  "numeroFinal": 1807,  "id": 30 }

       ]

}

But so far I can only get this one, and I still can’t write the Identity at the top

   [ 

       {  "numero": 1704,  "numeroFinal": 1804,  "id": 28 }, 
       {  "numero": 1806,  "numeroFinal": 1905,  "id": 28 }, 
       {  "numero": 1705,  "numeroFinal": 1706,  "id": 29 }, 
       {  "numero": 1707,  "numeroFinal": 1807,  "id": 30 }

   ]

The following code is my current implementation.

public void writeJsonStream(String file, List<Identidade> iden) throws IOException {

    JsonWriter writer = new JsonWriter(new OutputStreamWriter(m_Context.openFileOutput(file, Context.MODE_PRIVATE)));
    writer.setIndent(" ");
    writeArray(writer, util);
    writer.close();
}


public void writeArray(JsonWriter writer, List<Identidade> iden) throws IOException {
    writer.beginArray();
    for (Identidade i : iden) {
        writeIdentidade(writer, i);
    }
    writer.endArray();
}

public void writeIdentidade(JsonWriter writer, Identidade iden) throws IOException 

    writer.beginObject();
    writer.name("numero").value(iden.getM_numero());
    writer.name("numeroFinal").value(iden.numeroFinal());
    writer.name("id").value(iden.getID());
    writer.endObject();
}

Can someone give me a hint on how to add Identity?

  • I’m sure this can help you: https://stackoverflow.com/a/18983290/5191209

1 answer

1

The way to solve this problem is to use POJOS with the library GSON. Let’s take the example below:

Pojo Subidentidade

public class SubIdentidade implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer numero;
    private Integer numeroFinal;
    private Integer id;

    public SubIdentidade(Integer numero, Integer numeroFinal, Integer id) {
        super();
        this.numero = numero;
        this.numeroFinal = numeroFinal;
        this.id = id;
    }
//gets e sets ocultados

Pojo Identidade

public class Identidade implements Serializable {

    private static final long serialVersionUID = 1L;

    @SerializedName("Identidade")
    private List<SubIdentidade> subEntidades;

    public Identidade(List<SubIdentidade> subEntidades) {
        super();
        this.subEntidades = subEntidades;
    }
//Gets e Sets ocultados

Main test

public class Teste {

    public static void main(String[] args) {

        SubIdentidade sub1 = new SubIdentidade(1704, 1804, 28);
        SubIdentidade sub2 = new SubIdentidade(1806, 1905, 28);
        SubIdentidade sub3 = new SubIdentidade(1705, 1706, 29);
        SubIdentidade sub4 = new SubIdentidade(1707, 1807, 30);

        List<SubIdentidade> list = new ArrayList<SubIdentidade>();
        list.add(sub1);
        list.add(sub2);
        list.add(sub3);
        list.add(sub4);

        Identidade identidade = new Identidade(list);

        Gson gson = new Gson();

        System.out.println(gson.toJson(identidade).toString());
    }

}

Upshot:

{"Identidade":[{"numero":1704,"numeroFinal":1804,"id":28},{"numero":1806,"numeroFinal":1905,"id":28},{"numero":1705,"numeroFinal":1706,"id":29},{"numero":1707,"numeroFinal":1807,"id":30}]}

I climbed this project in git as well.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.