一个方法解析任意层数的json字符窜:使用正则表达式,递归算法,将jsonarray解析出后添加到list, jsonobject添加至map
//解析策略,有可能是解析json字符串,有可能为数据中的图片地址,email等
package cc.util.regex;
public enum RegexPolicy {
Json("Json"),
Image("ImageFromHtml");
private String value;
RegexPolicy (String value) {
this.value = value;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return value;
}
}
package cc.util.regex;
import java.util.ArrayList;
import java.util.HashMap;
import 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;
import android.util.Log;
/**
* A static Class help to Analyze data
* @author wangcccong
* @version 1.140122
* create at: 14-02-14
*/
public class RegexUtil {
//与解析策略相匹配的正则表达式
//private static final String REGULAR_IMG_HTML = "
Notice: if return Map you should better invoke map.get(null) to obtain value.
* @see {@link java.util.regex.Matcher}, {@link java.util.regex.Pattern}
* @param jsonStr
* @return {@link java.util.Map} or {@link java.util.List} or {@link java.lang.String}
*/
private static Object regexJson(final String jsonStr) {
if (jsonStr == null) throw new NullPointerException("JsonString shouldn't be null");
try {
if (isJsonObject(jsonStr)) {
final Pattern pattern = Pattern.compile(REGULAR_JSON_ITEM_NAME);
final Matcher matcher = pattern.matcher(jsonStr);
final Map map = new HashMap();
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()));
}
return map;
} else if (isJsonArray(jsonStr)) {
List 更多java解析任意层数json字符串的方法相关文章请关注PHP中文网!
本文档主要讲述的是Android数据格式解析对象JSON用法;JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java。比XML更轻量级,Json使用起来比较轻便和简单。JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看










