json的JSONObject(String)当解析到"}"就return了。 public JSONObject(JSONTokener x) throws JSONException { this(); char c; String key; if (x.nextClean() != '{') { throw x.syntaxError("A JSONObject text must begin with '{'"); } for (;;) { c = x.nextClean(); switch (c) { case 0: throw x.syntaxError("A JSONObject text must end with '}'"); case '}': return; default: x.back(); key = x.nextValue().toString(); } 自己写的解析 public static void parse() { String rec = "[{id =shm1 ,columnTitle =姓名 },{ id =shm2 ,columnTitle =姓名2}]"; List<Map<String,String>> list = new ArrayList<Map<String,String>>(); boolean z = false; boolean iskeyEnd = false; StringBuffer key = new StringBuffer(); StringBuffer value = new StringBuffer(); HashMap<String, String>map = null;
int length = rec.length(); for(int i=0;i<length;i++) { String t = rec.substring(i,i+1); if("{".equals(t)) { map = new HashMap<String,String>(); z = true; continue; }else if("}".equals(t)) { if(key.length()>0 || value.length()>0) { map.put(key.toString().trim(), value.toString().trim()); } if(map.size()>0) { list.add(map); }
map = new HashMap<String,String>(); key = new StringBuffer(); value = new StringBuffer(); z = false; iskeyEnd = false; }
List<Map<String,String>> list=new ArrayList<Map<String,String>>();
String[] array=rec.split("(?<=\\}),(?=\\{)");
for(String str:array){
Map<String,String> map=new HashMap<String,String>();
Pattern p=Pattern.compile("(\\w+)\\s*\\=\\s*([\\w\\u4e00-\\u9fa5]+)");
Matcher m=p.matcher(str);
while(m.find()){
map.put(m.group(1),m.group(2));
}
System.out.println(map);
list.add(map);
}
System.out.println(list);
}
public JSONObject(JSONTokener x) throws JSONException {
this();
char c;
String key; if (x.nextClean() != '{') {
throw x.syntaxError("A JSONObject text must begin with '{'");
}
for (;;) {
c = x.nextClean();
switch (c) {
case 0:
throw x.syntaxError("A JSONObject text must end with '}'");
case '}':
return;
default:
x.back();
key = x.nextValue().toString();
}
自己写的解析
public static void parse() {
String rec = "[{id =shm1 ,columnTitle =姓名 },{ id =shm2 ,columnTitle =姓名2}]";
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
boolean z = false;
boolean iskeyEnd = false;
StringBuffer key = new StringBuffer();
StringBuffer value = new StringBuffer();
HashMap<String, String>map = null;
int length = rec.length();
for(int i=0;i<length;i++) {
String t = rec.substring(i,i+1);
if("{".equals(t)) {
map = new HashMap<String,String>();
z = true;
continue;
}else if("}".equals(t)) {
if(key.length()>0 || value.length()>0) {
map.put(key.toString().trim(), value.toString().trim());
}
if(map.size()>0) {
list.add(map);
}
map = new HashMap<String,String>();
key = new StringBuffer();
value = new StringBuffer();
z = false;
iskeyEnd = false;
}
if(z) {
if(",".equals(t)) {
map.put(key.toString().trim(), value.toString().trim());
key = new StringBuffer();
value = new StringBuffer();
iskeyEnd = false;
}else {
if(!"=".equals(t)) {
if(!iskeyEnd) {
key.append(t);
}else{
value.append(t);
}
}else {
iskeyEnd = true;
}
}
}
}
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
HashMap m = (HashMap) iterator.next();
Set k = m.keySet();
for (Iterator iterator2 = k.iterator(); iterator2.hasNext();) {
String mk = (String) iterator2.next();
System.out.println(mk + ":" + m.get(mk));
}
}
}