Saltar al contenido

Cómo comprobar si un determinado string es JSON válido en Java

Después de de nuestra larga selección de datos hemos podido resolver esta duda que presentan algunos los usuarios. Te ofrecemos la solución y deseamos que te resulte de mucha ayuda.

Solución:

Una idea descabellada, intente analizarlo y detecte la excepción:

import org.json.*;

public boolean isJSONValid(String test) 
    try 
        new JSONObject(test);
     catch (JSONException ex) 
        // edited, to include @Arthur's comment
        // e.g. in case JSONArray is valid as well...
        try 
            new JSONArray(test);
         catch (JSONException ex1) 
            return false;
        
    
    return true;

Este código usa la implementación de la API JSON de org.json que está disponible en github, en maven y parcialmente en Android.

Biblioteca JACKSON

Una opción sería usar la biblioteca Jackson. Primero importe la última versión (ahora es):


    com.fasterxml.jackson.core
    jackson-databind
    2.7.0

Luego, puede implementar la respuesta correcta de la siguiente manera:

import com.fasterxml.jackson.databind.ObjectMapper;

public final class JSONUtils 
  private JSONUtils()

  public static boolean isJSONValid(String jsonInString ) 
    try 
       final ObjectMapper mapper = new ObjectMapper();
       mapper.readTree(jsonInString);
       return true;
     catch (IOException e) 
       return false;
    
  


Opción GSON de Google

Otra opción es utilizar Google Gson. Importar la dependencia:


    com.google.code.gson
    gson
    2.5

Nuevamente, puede implementar la solución propuesta como:

import com.google.gson.Gson;

public final class JSONUtils 
  private static final Gson gson = new Gson();

  private JSONUtils()

  public static boolean isJSONValid(String jsonInString) 
      try 
          gson.fromJson(jsonInString, Object.class);
          return true;
       catch(com.google.gson.JsonSyntaxException ex)  
          return false;
      
  

Una prueba simple sigue aquí:

//A valid JSON String to parse.
String validJsonString = " "developers": [ "firstName":"Linus" , "lastName":"Torvalds" , " +
        " "firstName":"John" , "lastName":"von Neumann"  ]";

// Invalid String with a missing parenthesis at the beginning.
String invalidJsonString = ""developers": [ "firstName":"Linus" , "lastName":"Torvalds" }, " +
        " "firstName":"John" , "lastName":"von Neumann"  ]}";

boolean firstStringValid = JSONUtils.isJSONValid(validJsonString); //true
boolean secondStringValid = JSONUtils.isJSONValid(invalidJsonString); //false

Tenga en cuenta que podría haber un problema “menor” debido a las comas finales que se solucionarán en el lanzamiento 3.0.0.

Con Google Gson puedes usar JsonParser:

import com.google.gson.JsonParser;

JsonParser parser = new JsonParser();
parser.parse(json_string); // throws JsonSyntaxException

Reseñas y puntuaciones del post

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



Utiliza Nuestro Buscador

Deja una respuesta

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