关于JSONObject的遍历
org.json.JSONObject
JSON字符串:
{
name: 韩梅梅,
height: 163,
age: 20
}
代码:
try {
JSONObject jsonObject = new JSONObject(json);//json就是JSON字符串
Iterator iterator = jsonObject.keys();
while (iterator.hasNext()) {
String key = (String) iterator.next();
String value = jsonObject.getString(key);
Log.e("TAG", "key=" + key + "\tvalue=" + value);//键值对key value
}
} catch (JSONException e) {
e.printStackTrace();
}
输出结果:
关于HashMap的遍历
java.util.HashMap
代码
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "韩梅梅");
map.put("height", "163");
map.put("age", "20");
//开始遍历
Set<String> params = map.keySet();
for (String key : params) {
String value = (String) map.get(key);
Log.e("TAG", "key=" + key + "\tvalue=" + value);
}
输出结果:
关于Object实例的遍历
这种遍历比较少见 最近才碰到
public class TestModel {
private String name;
private String height;
private String age;
public TestModel(String name, String height, String age) {
this.name = name;
this.height = height;
this.age = age;
}
//get set 就忽略了
}
private void run() throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
TestModel model = new TestModel("韩梅梅", "163", "20");
Field[] fields = model.getClass().getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
// 获取属性的名字
String key = fields[i].getName();//键
String name = fields[i].getName();
// 将属性的首字符大写,方便构造get,set方法
name = name.substring(0, 1).toUpperCase() + name.substring(1);
// 获取属性的类型
String type = fields[i].getGenericType().toString();
// 如果type是类类型,则前面包含"class ",后面跟类名 type == "class java.lang.String" 之类的
System.out.println("属性为:" + name);
Method m = model.getClass().getMethod("get" + name);
// 调用getter方法获取属性值
String value = (String) m.invoke(model);//值
Log.e("TAG", "key=" + key + "\tvalue=" + value);
}
}
输出结果