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