android解析JSON数据

2019-12-10 18:41:46王旭

四、 JSON数组中存储对象

Person person = new Person();
person.setUsername("linux" );
person.setPassword("123456" );
JSONArray jsonArray = new JSONArray();
jsonArray.put(0, person );
jsonArray.put(1, "I love you" );

// String username = jsonArray.getJSONObject(0).getString("username"); 错误的写法
Person user = (Person) jsonArray.get(0);
System.out.println("username: " + user.getUsername());

JSONObject的原理

JsonObject的存储与取出

一、 JSONObject里面维护了一个LinkedHashMap,当生成一个无参数的JSONObject,实质是初始化了一个Map:

private final LinkedHashMap<String, Object> nameValuePairs;
public JSONObject() {
  nameValuePairs = new LinkedHashMap<String, Object>();
}

 二、 当JSONObject增加数据,实质上把数据的键值对方法存放在上述的Map中:

public JSONObject put(String name, boolean value) throws JSONException {
  nameValuePairs.put(checkName(name), value);
  return this;
}

三、 从JSONObject中取出数据,很容易想到的就是从Map取出了:

public String getString(String name) throws JSONException {
  Object object = get(name); // get()方法就是执行Object result = nameValuePairs.get(name);
  String result = JSON.toString(object);
  if (result == null) {
    throw JSON.typeMismatch(name, object, "String");
  }
  return result;
}