Kopieren Sie den Codecode wie folgt:
//Parsing-Strategie, es kann eine JSON-Zeichenfolge analysieren, es können Bildadresse, E-Mail usw. in den Daten sein
packagecc.util.regex;
öffentliche Aufzählung RegexPolicy {
Json("Json"),
Image("ImageFromHtml");
privater String-Wert;
RegexPolicy (String-Wert) {
this.value = value;
}
@Override
öffentlicher String toString() {
// TODO Automatisch generierter Methoden-Stub
Rückgabewert;
}
}
packagecc.util.regex;
import java.util.ArrayList;
import java.util.HashMap;
java.util.List importieren;
java.util.Map importieren;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
/**
* Eine statische Klassenhilfe zum Analysieren von Daten
* @author wangcccong
* @Version 1.140122
* erstellt am: 14.02.14
*/
öffentliche Klasse RegexUtil {
//Regulärer Ausdruck, der der Parsing-Strategie entspricht
//private static final String REGULAR_IMG_HTML = "<img +?src=/"(.+?)/"";
private static final String REGULAR_JSON_ITEM_NAME = "/"([^///" ]+?)/":";
//private static final String REGULAR_JSON_ARRAY_NAME = ", *?/" *?([a-zA-Z0-9]*?) *?/" *?: *?//[ *?//{";
//Öffentliche Methodenanalyse, einfach die Zeichenfolge übergeben
öffentliches statisches Objekt regex(endgültige RegexPolicy-Richtlinie, endgültige String-Daten) {
Schalter (Richtlinie) {
caseJson:
return regexJson(data);
Fall Bild:
brechen;
Standard:
brechen;
}
null zurückgeben;
}
/**
* Durch rekursives Parsen der Json-Zeichenfolge erhalten Sie den Namen der Json-Zeichenfolge durch den regulären Ausdruck.
* siehe auch Matcher und Pattern und Analyse von Daten. Wenn das JsonObject-Objekt für analytische Daten ein Schlüsselwertpaar (Map) zurückgibt,
* wenn JsonArray List zurückgegeben wird, andernfalls wird String zurückgegeben.
* <br><b>Hinweis:</b> Wenn Sie Map zurückgeben, sollten Sie besser map.get(null) aufrufen, um den Wert zu erhalten.
* @see {@link java.util.regex.Matcher}, {@link java.util.regex.Pattern}
* @param jsonStr
* @return {@link java.util.Map} oder {@link java.util.List} oder {@link java.lang.String}
*/
privates statisches Objekt regexJson(final String jsonStr) {
if (jsonStr == null) throw new NullPointerException("JsonString sollte nicht null sein");
versuchen {
if (isJsonObject(jsonStr)) {
finales Muster pattern = Pattern.compile(REGULAR_JSON_ITEM_NAME);
final Matcher matcher = pattern.matcher(jsonStr);
final Map<String, Object> map = new HashMap<String, Object>();
final JSONObject jsonObject = new JSONObject(jsonStr);
for ( ; matcher.find(); ) {
String groupName = matcher.group(1);
Object obj = jsonObject.opt(groupName);
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()));
}
Rückkehrkarte;
} else if (isJsonArray(jsonStr)) {
List<Object> list = new ArrayList<Object>();
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
Objekt object = jsonArray.opt(i);
list.add(regexJson(object.toString()));
}
Rückgabeliste;
}
} Catch (Ausnahme e) {
// TODO: Ausnahme behandeln
Log.e("RegexUtil--regexJson", e.getMessage()+"");
}
return jsonStr;
}
/**
* Um festzustellen, ob eine Zeichenfolge JsonObject ist {@link org.json.JSONObject}
* @param jsonStr {@link java.lang.String}
* @return boolean
*/
privater statischer boolescher Wert isJsonObject(final String jsonStr) {
if (jsonStr == null) return false;
versuchen {
neues JSONObject(jsonStr);
return true;
} Catch (JSONException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
return false;
}
}
/**
* Um festzustellen, ob eine Zeichenfolge JsonArray {@link org.json.JSONArray} ist;
* @param jsonStr {@link java.lang.String}
* @return boolean
*/
privater statischer boolescher Wert isJsonArray(final String jsonStr) {
if (jsonStr == null) return false;
versuchen {
neues JSONArray(jsonStr);
return true;
} Catch (JSONException e) {
// TODO Automatisch generierter Catch-Block
e.printStackTrace();
return false;
}
}
}
//Wie benutzt man
Objekt object = RegexUtil.regex(RegexPolicy.Json, jsonStr.substring(jsonStr.indexOf("{"),
jsonStr.lastIndexOf("}")+1));
if (Objektinstanz von String) {
Log.e("string", object.toString());
} else if (Objektinstanz von Map) {
@SuppressWarnings("ungeprüft")
HashMap<String, Object> map = (HashMap<String, Object>)object;
Iterator<Entry<String, Object>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Eintrag<String, Objekt> Eintrag = iterator.next();
if (entry.getValue() Instanz der Liste) {
Log.e(entry.getKey(), enter.getValue().toString());
} anders {
Log.e(entry.getKey(), enter.getValue().toString());
}
}
} else if (Objektinstanz der Liste) {
Log.e("list", object.toString());
}