- 通过JSONTokener来判断json是JSONObject还是JSONArray
public static String getJsonJointString(String top, String jsonStr) {
StringBuffer sb = new StringBuffer();
try {
Object object = new JSONTokener(jsonStr).nextValue();
if (object instanceof JSONObject) {
JSONObject jsonObject = (JSONObject) object;
Iterator iterator = jsonObject.keys();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String value = jsonObject.getString(key);
if (hasLower(value)) {
String s = getJsonJointString(key,value);
s.substring(0, s.length() - 1);
sb.append(s);
} else {
if (top!=null&&!"".equals(top)) {
sb.append(top+"."+key).append("=").append(value).append("&");
} else {
sb.append(key).append("=").append(value).append("&");
}
}
}
} else if (object instanceof JSONArray) {
JSONArray jsonArray = (JSONArray) object;
if (jsonArray.length() > 0) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
Iterator iterator = jsonObject.keys();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String value = jsonObject.getString(key);
if (hasLower(value)) {
String s = getJsonJointString(key,value);
s.substring(0, s.length() - 1);
sb.append(s);
} else {
if (top!=null&&!"".equals(top)) {
sb.append(top+"["+i+"]"+"."+key).append("=").append(value).append("&");
} else {
sb.append(key).append("=").append(value).append("&");
}
}
}
}
}
}
} catch (JSONException e) {
e.printStackTrace();
}
return sb.toString();
}
public static boolean hasLower(String json) {
if (json==null||"".equals(json)) {
return false;
}
if ((json.contains("{") && json.contains("}")) || (json.contains("[") && json.contains("]"))) {
return true;
} else {
return false;
}
}