Copie el código de código de la siguiente manera:
// Estrategia de análisis, puede ser una cadena json, puede ser una dirección de imagen, correo electrónico, etc. en los datos
paquetecc.util.regex;
enumeración pública RegexPolicy {
Json("Json"),
Imagen("ImagenDeHtml");
valor de cadena privada;
Política de expresiones regulares (valor de cadena) {
this.value = valor;
}
@Anular
cadena pública toString() {
// TODO Código auxiliar de método generado automáticamente
valor de retorno;
}
}
paquetecc.util.regex;
importar java.util.ArrayList;
importar java.util.HashMap;
importar java.util.List;
importar java.util.Map;
importar java.util.regex.Matcher;
importar java.util.regex.Pattern;
importar org.json.JSONArray;
importar org.json.JSONException;
importar org.json.JSONObject;
importar android.util.Log;
/**
* Una clase de ayuda estática para analizar datos.
* @autor wangcccong
* @versión 1.140122
* crear en: 14-02-14
*/
clase pública RegexUtil {
//Expresión regular que coincide con la estrategia de análisis
//cadena final estática privada REGULAR_IMG_HTML = "<img +?src=/"(.+?)/"";
cadena final estática privada REGULAR_JSON_ITEM_NAME = "/"([^///" ]+?)/":";
//cadena final estática privada REGULAR_JSON_ARRAY_NAME = ", *?/" *?([a-zA-Z0-9]*?) *?/" *?: *?//[ *?//{";
// Análisis del método público, simplemente pasa la cadena
expresión regular de objeto estático público (política final de RegexPolicy, datos de cadena finales) {
cambiar (política) {
casoJson:
devolver regexJson(datos);
Imagen del caso:
romper;
por defecto:
romper;
}
devolver nulo;
}
/**
* Al analizar recursivamente la cadena Json, obtenga el nombre de la cadena Json mediante la expresión regular,
* consulte también Matcher y Pattern y análisis de datos. Si los datos analíticos del objeto JsonObject devuelven un par clave-valor (Mapa),
* si se devuelve JsonArray List; de lo contrario, devuelve String.
* <br><b>Aviso:</b> si devuelve Map, es mejor que invoque map.get(null) para obtener el valor.
* @ver {@link java.util.regex.Matcher}, {@link java.util.regex.Pattern}
* @param jsonStr
* @return {@link java.util.Map} o {@link java.util.List} o {@link java.lang.String}
*/
Objeto estático privado regexJson (cadena final jsonStr) {
if (jsonStr == null) lanza una nueva NullPointerException ("JsonString no debería ser nulo");
intentar {
si (isJsonObject(jsonStr)) {
Patrón final patrón = Pattern.compile(REGULAR_JSON_ITEM_NAME);
final Matcher comparador = patrón.matcher(jsonStr);
mapa final<Cadena, Objeto> mapa = nuevo HashMap<Cadena, Objeto>();
final JSONObject jsonObject = nuevo JSONObject(jsonStr);
para ( ; emparejador.buscar(); ) {
String nombre del grupo = matcher.group(1);
Objeto obj = jsonObject.opt(groupName);
si (obj! = nulo && isJsonArray(obj.toString()))
matcher.region(matcher.end() + obj.toString().replace("//", "").length(), matcher.regionEnd());
if (obj! = null &&! map.containsKey (nombre del grupo))
map.put(groupName, regexJson(obj.toString()));
}
mapa de regreso;
} más si (isJsonArray(jsonStr)) {
Lista<Objeto> lista = nueva ArrayList<Objeto>();
JSONArray jsonArray = nuevo JSONArray(jsonStr);
para (int i = 0; i < jsonArray.length(); i++) {
Objeto objeto = jsonArray.opt(i);
list.add(regexJson(object.toString()));
}
lista de devolución;
}
} captura (Excepción e) {
// TODO: manejar excepción
Log.e("RegexUtil--regexJson", e.getMessage()+"");
}
devolver jsonStr;
}
/**
* Para determinar si una cadena es JsonObject {@link org.json.JSONObject}
* @param jsonStr {@link java.lang.String}
* @return booleano
*/
isJsonObject booleano estático privado (cadena final jsonStr) {
si (jsonStr == null) devuelve falso;
intentar {
nuevo JSONObject(jsonStr);
devolver verdadero;
} captura (JSONException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
devolver falso;
}
}
/**
* Para determinar si una cadena es JsonArray {@link org.json.JSONArray};
* @param jsonStr {@link java.lang.String}
* @return booleano
*/
isJsonArray booleano estático privado (cadena final jsonStr) {
si (jsonStr == null) devuelve falso;
intentar {
nuevo JSONArray(jsonStr);
devolver verdadero;
} captura (JSONException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace();
devolver falso;
}
}
}
//Cómo utilizar
Objeto objeto = RegexUtil.regex(RegexPolicy.Json, jsonStr.substring(jsonStr.indexOf("{"),
jsonStr.lastIndexOf("}")+1));
si (objeto instancia de cadena) {
Log.e("cadena", object.toString());
} más si (objeto instancia de mapa) {
@SuppressWarnings("sin marcar")
HashMap<Cadena, Objeto> mapa = (HashMap<Cadena, Objeto>)objeto;
Iterador<Entrada<Cadena, Objeto>> iterador = map.entrySet().iterator();
mientras (iterator.hasNext()) {
Entrada<Cadena, Objeto> entrada = iterator.next();
if (entry.getValue() instancia de Lista) {
Log.e(entry.getKey(), entrada.getValue().toString());
} demás {
Log.e(entry.getKey(), entrada.getValue().toString());
}
}
} else if (objeto instancia de Lista) {
Log.e("lista", object.toString());
}