json 字符串介绍:
示例:
"adslot":{"id":"3169","bidfloor":10.0,"bidfloorcur":"CNY","count":"1","instl":0,
"banner":{"w":1080,"h":1920,"pos":0,"battr":[]},
"nativ":null,"video":null,"is_splash_screen":1,
"bitc":["1","2"],
"request_render_type":"JSON","deeplink":"UNSUPPORT"}
json 中括号代表含义;
{}:代表一个对象
[]:代表一个数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
针对json 字符串的解析:
public void parseBasicjson(Map<String, String> map, String jsonStr, String parent_name, boolean isArray) {
try {
if (null != map && null != jsonStr && !"".equals(jsonStr)
&& jsonStr.length() > 1) {
if (isArray) {
JSONArray reqJson = new JSONArray(jsonStr);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < reqJson.length(); i++) {
Object value = reqJson.get(i);
// 1.数组里面是对象
if (value instanceof JSONObject) {
parseBasicjson(map, value.toString(), parent_name, false);
} else if (value instanceof JSONArray) {
// 1.数组里面是对象
parseBasicjson(map, value.toString(), parent_name, true);
} else {
// 1.数组里面是字符串
if (sb.length() > 0)
sb.append(",");
sb.append(value.toString().trim());
if (i == reqJson.length() - 1) {
map.put(parent_name, sb.toString());
}
}
}
} else {
JSONObject reqJson = new JSONObject(jsonStr);
Iterator<?> keys = reqJson.keys();
StringBuffer sb = new StringBuffer();
while (keys.hasNext()) {
String key = keys.next().toString();
Object value = reqJson.get(key);
sb.delete(0, sb.length());
if (null != parent_name && !"".equals(parent_name)) {
sb.append(parent_name + "_" + key);
} else {
sb.append(key);
}
if (value instanceof JSONObject) {
parseBasicjson(map, value.toString(), sb.toString(), false);
} else if (value instanceof JSONArray) {
parseBasicjson(map, value.toString(), sb.toString(), true);
} else {
map.put(sb.toString(), value.toString().trim());
}
}
}
}
} catch (Exception e) {
}
}
引入依赖:
<dependency>
<groupId>org.codehaus.jettison</groupId>
<artifactId>jettison</artifactId>
<version>1.3.3</version>
</dependency>