Copy kode kodenya sebagai berikut:
//Strategi parsing, mungkin parsing string json, mungkin alamat gambar, email, dll. dalam data
packagecc.util.regex;
Kebijakan Regex enum publik {
Json("Json"),
Gambar("GambarDariHtml");
nilai String pribadi;
RegexPolicy (Nilai string) {
this.nilai = nilai;
}
@Mengesampingkan
String publik keString() {
// TODO Stub metode yang dibuat secara otomatis
nilai kembalian;
}
}
packagecc.util.regex;
impor java.util.ArrayList;
impor java.util.HashMap;
impor java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
impor android.util.Log;
/**
* Bantuan Kelas statis untuk Menganalisis data
* @penulis wangcccong
* @versi 1.140122
* buat pada: 14-02-14
*/
RegexUtil kelas publik {
//Ekspresi reguler yang cocok dengan strategi parsing
//String akhir statis pribadi REGULAR_IMG_HTML = "<img +?src=/"(.+?)/"";
String akhir statis pribadi REGULAR_JSON_ITEM_NAME = "/"([^///" ]+?)/":";
//String akhir statis pribadi REGULAR_JSON_ARRAY_NAME = ", *?/" *?([a-zA-Z0-9]*?) *?/" *?: *?//[ *?//{";
//Penguraian metode publik, cukup masukkan stringnya
regex Objek statis publik(kebijakan RegexPolicy akhir, data String akhir) {
beralih (kebijakan) {
kasusJson:
kembalikan regexJson(data);
Gambar kasus:
merusak;
bawaan:
merusak;
}
kembalikan nol;
}
/**
* Dengan mengurai string Json secara rekursif, dapatkan nama string Json dengan ekspresi reguler,
* lihat juga Pencocokan dan Pola dan analisis data. Jika data analitik objek JsonObject mengembalikan pasangan nilai kunci (Peta),
* jika Daftar JsonArray dikembalikan, jika tidak maka akan mengembalikan String.
* <br><b>Pemberitahuan:</b> jika mengembalikan Map sebaiknya Anda memanggil map.get(null) untuk mendapatkan nilai.
* @lihat {@link java.util.regex.Matcher}, {@link java.util.regex.Pattern}
* @param jsonStr
* @return {@link java.util.Map} atau {@link java.util.List} atau {@link java.lang.String}
*/
Objek statis pribadi regexJson(String akhir jsonStr) {
if (jsonStr == null) throw new NullPointerException("JsonString tidak boleh nol");
mencoba {
jika (isJsonObject(jsonStr)) {
pola Pola akhir = Pattern.compile(REGULAR_JSON_ITEM_NAME);
pencocokan akhir pencocokan = pattern.matcher(jsonStr);
peta akhir<String, Objek> peta = HashMap baru<String, Objek>();
final JSONObject jsonObject = JSONObject baru(jsonStr);
untuk ( ; matcher.find(); ) {
String groupName = matcher.group(1);
Obj objek = jsonObject.opt(groupName);
jika (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()));
}
peta kembali;
} lain jika (isJsonArray(jsonStr)) {
Daftar<Objek> daftar = Daftar Array baru<Objek>();
JSONArray jsonArray = JSONArray baru(jsonStr);
untuk (int i = 0; i < jsonArray.length(); i++) {
Objek objek = jsonArray.opt(i);
daftar.tambahkan(regexJson(objek.toString()));
}
daftar pengembalian;
}
} tangkapan (Pengecualian e) {
// TODO: menangani pengecualian
Log.e("RegexUtil--regexJson", e.getMessage()+"");
}
kembalikan jsonStr;
}
/**
* Untuk menentukan apakah suatu string adalah JsonObject {@link org.json.JSONObject}
* @param jsonStr {@link java.lang.String}
* @kembalikan boolean
*/
boolean statis pribadi isJsonObject(String akhir jsonStr) {
jika (jsonStr == null) mengembalikan salah;
mencoba {
JSONObject baru(jsonStr);
kembali benar;
} tangkapan (JSONException e) {
// TODO Blok tangkapan yang dibuat secara otomatis
e.printStackTrace();
kembali salah;
}
}
/**
* Untuk menentukan apakah suatu string adalah JsonArray {@link org.json.JSONArray};
* @param jsonStr {@link java.lang.String}
* @kembalikan boolean
*/
boolean statis pribadi isJsonArray(String akhir jsonStr) {
jika (jsonStr == null) mengembalikan salah;
mencoba {
JSONArray baru(jsonStr);
kembali benar;
} tangkapan (JSONException e) {
// TODO Blok tangkapan yang dibuat secara otomatis
e.printStackTrace();
kembali salah;
}
}
}
//Cara menggunakan
Objek objek = RegexUtil.regex(RegexPolicy.Json, jsonStr.substring(jsonStr.indexOf("{"),
jsonStr.lastIndexOf("}")+1));
if (objek instanceof String) {
Log.e("string", objek.toString());
} else if (contoh objek Peta) {
@SuppressWarnings("tidak dicentang")
HashMap<String, Objek> peta = (HashMap<String, Objek>)objek;
Iterator<Entri<String, Objek>> iterator = peta.entrySet().iterator();
sementara (iterator.hasNext()) {
Entri<String, Objek> entri = iterator.next();
if (entry.getValue() contoh Daftar) {
Log.e(entry.getKey(), entry.getValue().toString());
} kalau tidak {
Log.e(entry.getKey(), entry.getValue().toString());
}
}
} else if (daftar instance objek) {
Log.e("daftar", objek.toString());
}