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

1

I'm 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 until now I can only get this, and I'm still unable to write 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 code that follows 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 ?

    
asked by anonymous 19.09.2017 / 12:38

1 answer

1

How to solve this problem is to use POJOS with the GSON library. Let's look at the example below:

Pojo SubIdentity

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 Identity

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

Test Main

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());
    }

}

Result:

{"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 upload this project in git as well.

    
19.09.2017 / 14:00