Saltar al contenido

¿Cómo ordenar el objeto JSON en Java?

Estate atento ya que en este tutorial encontrarás el hallazgo que buscas.

Solución:

Usé la API simple de JSON para ordenar esto. Aquí está mi código:

import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class SortJSON 

public static void main(String[] args) 
    JSONParser parser = new JSONParser();
    try 
        JSONObject o = (JSONObject) parser.parse(new FileReader("test3.json"));
        JSONArray array = (JSONArray) o.get("results");
        ArrayList list = new ArrayList<>();

        for (int i = 0; i < array.size(); i++) 
            list.add((JSONObject) array.get(i));
        
        Collections.sort(list, new MyJSONComparator());

        for (JSONObject obj : list) 
            System.out.println(((JSONObject) obj.get("attributes")).get("OBJECTID"));
        
     catch (Exception e) 
        e.printStackTrace();
    




class MyJSONComparator implements Comparator 

@Override
public int compare(JSONObject o1, JSONObject o2) 
    String v1 = (String) ((JSONObject) o1.get("attributes")).get("COMMERCIALNAME_E");
    String v3 = (String) ((JSONObject) o2.get("attributes")).get("COMMERCIALNAME_E");
    return v1.compareTo(v3);



Analice estos JSON en la colección de objetos y use el comparador para ordenarlos usando su campo preferido.

  • Use GSON para analizarlo en una colección de objetos

Ejemplo:

import com.google.gson.Gson;

class Person 
  private int age;
  private String name;


String json = "'age':22,'name':'Jigar'";
Gson gson = new Gson();
TestJsonFromObject obj = gson.fromJson(json, Person.class);  

Si desea crear JSON desde Object.

Person p = new Person();
p.setName("Jigar");
p.setAge(22);
String jsonStr = new com.google.gson.Gson().toJson(obj);

solía jackson para hacerlo. A continuación se muestra la implementación del método de ordenación, probablemente pueda agregarle más controles y agregar un tipo de retorno

 public void sort(String data) throws IOException 
    JsonNode node = new ObjectMapper().readTree(data);
    ArrayNode array = (ArrayNode) node.get("results");
    Iterator i =array.elements();
    List list = new ArrayList<>();
    while(i.hasNext())
        list.add(i.next());
    
    list.sort(Comparator.comparing(o -> o.get("attributes").get("COMMERCIALNAME_E").asText()));

valoraciones y reseñas

Si para ti ha resultado de utilidad nuestro artículo, agradeceríamos que lo compartas con otros seniors así contrubuyes a extender este contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *