First you will need to create a class called Empresa
, follow:
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 the kind Empresa
and a JSONObject
passing the json
who 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 respective values. I will post two examples.
Using the interface Iterator
:
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 interface Set
:
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);
}
Going through 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 parse automatically simply, I recommend using the library GSON or Jackson.
Want to convert to a company class or just a map containing key and value?
– Diego Schmidt
I need to convert this data to an array of my company class, what is making me difficult is that the string comes with the "root" of each registration (company1, company2, company3), remembering that this root is me who type the name.
– Alan Santos