Copie o código do código da seguinte forma:
//Estratégia de análise, pode ser análise de string json, pode ser endereço de imagem, email, etc.
pacotecc.util.regex;
enum público RegexPolicy {
Json("Json"),
Imagem("ImageFromHtml");
valor da string privada;
RegexPolicy (valor da string) {
este.valor = valor;
}
@Substituir
string pública paraString() {
// TODO stub de método gerado automaticamente
valor de retorno;
}
}
pacotecc.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;
/**
* Uma classe estática ajuda a analisar dados
* @autor wangcccong
* @versão 1.140122
*criar em: 14-02-14
*/
classe pública RegexUtil {
//Expressão regular que corresponde à estratégia de análise
//final estático privado String REGULAR_IMG_HTML = "<img +?src=/"(.+?)/"";
string final estática privada REGULAR_JSON_ITEM_NAME = "/"([^///" ]+?)/":";
//string final estática privada REGULAR_JSON_ARRAY_NAME = ", *?/" *?([a-zA-Z0-9]*?) *?/" *?: *?//[ *?//{";
//Análise do método público, basta passar a string
public static Object regex(política final RegexPolicy, dados finais da String) {
mudar (política) {
casoJson:
retornar regexJson(dados);
imagem do caso:
quebrar;
padrão:
quebrar;
}
retornar nulo;
}
/**
* Ao analisar recursivamente a string Json, obtenha o nome da string Json pela expressão regular,
* veja também Matcher e Padrão e análise de dados Se o objeto JsonObject de dados analíticos retornar par de valores-chave (Mapa),
* se JsonArray List for retornado, caso contrário retorna String.
* <br><b>Aviso:</b> se retornar Map é melhor invocar map.get(null) para obter o valor.
* @see {@link java.util.regex.Matcher}, {@link java.util.regex.Pattern}
* @param jsonStr
* @return {@link java.util.Map} ou {@link java.util.List} ou {@link java.lang.String}
*/
objeto estático privado regexJson (string final jsonStr) {
if (jsonStr == null) throw new NullPointerException("JsonString não deveria ser nulo");
tentar {
if (isJsonObject(jsonStr)) {
padrão final padrão = Pattern.compile(REGULAR_JSON_ITEM_NAME);
final Matcher matcher = pattern.matcher(jsonStr);
final Map<String, Object> map = new HashMap<String, Object>();
final JSONObject jsonObject = novo JSONObject(jsonStr);
for ( ; matcher.find(); ) {
String nomegrupo = matcher.group(1);
Objeto obj = jsonObject.opt(nomegrupo);
if (obj!= null && isJsonArray(obj.toString()))
matcher.region(matcher.end() + obj.toString().replace("//", "").length(), matcher.regionEnd());
if (obj != null && !map.containsKey(groupName))
map.put(groupName, regexJson(obj.toString()));
}
mapa de retorno;
} senão if (isJsonArray(jsonStr)) {
Lista<Objeto> lista = new ArrayList<Objeto>();
JSONArray jsonArray = novo JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
Objeto objeto = jsonArray.opt(i);
list.add(regexJson(object.toString()));
}
lista de retorno;
}
} catch (Exceção e) {
//TODO: trata exceção
Log.e("RegexUtil--regexJson", e.getMessage()+"");
}
retornar jsonStr;
}
/**
* Para determinar se uma string é JsonObject {@link org.json.JSONObject}
* @param jsonStr {@link java.lang.String}
* @return booleano
*/
private static boolean isJsonObject(string final jsonStr) {
if (jsonStr == null) retorna falso;
tentar {
novo JSONObject(jsonStr);
retornar verdadeiro;
} catch (JSONException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
retornar falso;
}
}
/**
* Para determinar se uma string é JsonArray {@link org.json.JSONArray};
* @param jsonStr {@link java.lang.String}
* @return booleano
*/
private static boolean isJsonArray(string final jsonStr) {
if (jsonStr == null) retorna falso;
tentar {
novo JSONArray(jsonStr);
retornar verdadeiro;
} catch (JSONException e) {
// TODO Bloco catch gerado automaticamente
e.printStackTrace();
retornar falso;
}
}
}
//Como usar
Objeto objeto = RegexUtil.regex(RegexPolicy.Json, jsonStr.substring(jsonStr.indexOf("{"),
jsonStr.lastIndexOf("}")+1));
if (objeto instância de String) {
Log.e("string", object.toString());
} else if (objeto instância do mapa) {
@SuppressWarnings("desmarcado")
HashMap<String, Objeto> map = (HashMap<String, Objeto>)objeto;
Iterador<Entry<String, Object>> iterador = map.entrySet().iterator();
enquanto (iterator.hasNext()) {
Entry<String, Objeto> entrada = iterator.next();
if (entry.getValue() instância da lista) {
Log.e(entry.getKey(), entrada.getValue().toString());
} outro {
Log.e(entry.getKey(), entrada.getValue().toString());
}
}
} else if (objeto instância da lista) {
Log.e("lista", object.toString());
}