Convert a JSON String to an Array of the JAVA Object

1

Hello, I can not do the conversion, my string is coming like this.

{
  "empresa1":
  {
    "category_id" : "Item 1",
    "id" : 1,
    "imagePath" : "imagem",
    "name" : "empresa 1",
    "short_desc" : "desc da empresa 1"
  },
  "empresa2":
  {
    "category_id" : "Item 1",
    "id" : 2,
    "imagePath" : "imagem",
    "name" : "empresa2",
    "short_desc" : "desc da empresa 2"
  },
  "empresa3":
  {
    "category_id" : "Item 1",
    "id" : 3,
    "imagePath" : "imagem",
    "name" : "empresa3",
    "short_desc" : "desc da empresa 3"
  }
}

I need to convert this text to an array of my object and then popular my table.

Thank you

    
asked by anonymous 22.08.2017 / 21:22

1 answer

1

First you will need to create a class called Empresa , below:

public class Empresa {

    private Integer id;
    private String idCategoria;
    private String imagePath;
    private String name;
    private String shortDesc;

    public Integer getId() {return id;}
    public void setId(Integer id) {this.id = id;}

    public String getIdCategoria() {return idCategoria;}
    public void setIdCategoria(String idCategoria) {this.idCategoria = idCategoria;}

    public String getImagePath() {return imagePath;}
    public void setImagePath(String imagePath) {this.imagePath = imagePath;}

    public String getName() {return name;}
    public void setName(String name) {this.name = name;}

    public String getShortDesc() {return shortDesc;}
    public void setShortDesc(String shortDesc) {this.shortDesc = shortDesc;}
}

Now create a List of type Empresa and a JSONObject by passing json which is in String as a parameter.

String jsonString = "{ \"empresa1\": { \"category_id\": \"Item 1\", \"id\": 1, \"imagePath\": \"imagem\", \"name\": \"empresa 1\", \"short_desc\": \"desc da empresa 1\" }, \"empresa2\": { \"category_id\": \"Item 1\", \"id\": 2, \"imagePath\": \"imagem\", \"name\": \"empresa2\", \"short_desc\": \"desc da empresa 2\" }, \"empresa3\": { \"category_id\": \"Item 1\", \"id\": 3, \"imagePath\": \"imagem\", \"name\": \"empresa3\", \"short_desc\": \"desc da empresa 3\" } }";

JSONObject jsonObjectEmpresas = new JSONObject(jsonString);

List<Empresa> listaDeEmpresas = new ArrayList<Empresa>();

After doing this, there are a few ways you can go through the keys and get their values. I'll post two examples.

Using the Iterator interface:

Iterator<String> iteratorEmpresas = jsonObjectEmpresas.keys();
while (iteratorEmpresas.hasNext()) {
    JSONObject dadosEmpresa = jsonObjectEmpresas.getJSONObject(iteratorEmpresas.next());

   Empresa empresa = new Empresa();
        empresa.setId(dadosEmpresa.getInt("id"));
        empresa.setName(dadosEmpresa.getString("name"));
        empresa.setIdCategoria(dadosEmpresa.getString("category_id"));
        empresa.setImagePath(dadosEmpresa.getString("imagePath"));
        empresa.setShortDesc(dadosEmpresa.getString("short_desc"));

        listaDeEmpresas.add(empresa);
}

Using the Set interface:

for (String keyEmpresa : jsonObjectEmpresas.keySet()) {
    JSONObject dadosEmpresa = jsonObjectEmpresas.getJSONObject(keyEmpresa);

        Empresa empresa = new Empresa();
        empresa.setId(dadosEmpresa.getInt("id"));
        empresa.setName(dadosEmpresa.getString("name"));
        empresa.setIdCategoria(dadosEmpresa.getString("category_id"));
        empresa.setImagePath(dadosEmpresa.getString("imagePath"));
        empresa.setShortDesc(dadosEmpresa.getString("short_desc"));

        listaDeEmpresas.add(empresa);
}

Touring the list of companies:

for (Empresa empresa : listaDeEmpresas) {
    System.out.println("-----");
    System.out.println("ID:" + empresa.getId());
    System.out.println("NAME:" + empresa.getName());
    System.out.println("ID CATEGORIA:" + empresa.getIdCategoria());
    System.out.println("IMG PATH:" + empresa.getImagePath());
    System.out.println("SHORT DESC:" + empresa.getShortDesc());
}

To work with json and automatic parse in a simple way, I recommend using the GSON library or Jackson .

    
22.08.2017 / 22:16