在一个简单地例子中实现重写equals方法,以及实现jason与array之间的相互转换。
<ol><li>import java.util.ArrayList;
</li><li>import java.util.List;</li><li>
</li><li>import org.json.JSONArray;</li><li>import org.json.JSONException;</li><li>import org.json.JSONObject;</li><li>import org.json.JSONTokener;</li><li>
</li><li>import android.text.TextUtils;</li><li>
</li><li>class Person {</li><li> private String name = "";</li><li> private int age = 0;</li><li> private boolean isVIP = false;</li><li>
</li><li> public void setName(String name) {</li><li> this.name = name;</li><li> }</li><li>
</li><li> public String getName() {</li><li> return this.name;</li><li> }</li><li>
</li><li> public int getAge() {</li><li> return age;</li><li> }</li><li>
</li><li> public void setAge(int age) {</li><li> this.age = age;</li><li> }</li><li>
</li><li> public boolean isVIP() {</li><li> return isVIP;</li><li> }</li><li>
</li><li> public void setVIP(boolean isVIP) {</li><li> this.isVIP = isVIP;</li><li> }</li><li>
</li><li> // construct functions</li><li> public Person() {</li><li> super();</li><li> }</li><li>
</li><li> public Person(String name, int age, boolean isVIP) {</li><li> this.name = name;</li><li> this.age = age;</li><li> this.isVIP = isVIP;</li><li> }</li><li>
</li><li> public Person(JSONObject json) {</li><li> try {</li><li> if (json.has("name")) {</li><li> this.name = json.getString("id");</li><li> }</li><li> // so is age,isVIP</li><li> if (json.has("age")) {</li><li> this.age = json.getInt("age");</li><li> }</li><li> if (json.has("isVIP")) {</li><li> this.isVIP = json.getBoolean("isVIP");</li><li> }</li><li> } catch (JSONException e) {</li><li> e.printStackTrace();</li><li> }</li><li>
</li><li> }</li><li>
</li><li> public String toString() {</li><li> return this.name;</li><li> }</li><li>
</li><li> public boolean equals(Object obj) {</li><li> if (obj == null) {</li><li> return false;</li><li> }</li><li> if (getClass() != obj.getClass()) {</li><li> return false;</li><li> }</li><li> if (this == obj) {</li><li> return true;</li><li> }</li><li>
</li><li> Person other = (Person) obj;</li><li> // name==null,ot</li><li> if (name == null) {</li><li> if (other.name != null) {</li><li> return false;</li><li> }</li><li> } else if (!name.equals(other.name)) {</li><li> return false;</li><li> }</li><li>
</li><li> return true;</li><li> }</li><li>
</li><li> /**</li><li> * array to JSON</li><li> * </li><li> * @throws JSONException</li><li> * </li><li> * </li><li> */</li><li> public static String arrayToJson(List<Person> Persons) {</li><li> if (Persons == null || Persons.isEmpty()) {</li><li> return null;</li><li> }</li><li> JSONArray jsonArray = new JSONArray();</li><li> for (Person p : Persons) {</li><li> JSONObject jsonObject = new JSONObject();</li><li> try {</li><li> jsonObject.put("name", p.getName());</li><li> jsonObject.put("age", p.getAge());</li><li> jsonObject.put("isVIP", p.getAge());</li><li>
</li><li> jsonArray.put(jsonObject);</li><li> } catch (JSONException e) {</li><li> // TODO: handle exception</li><li> e.printStackTrace();</li><li> return null;</li><li> }</li><li> }</li><li> return jsonArray.toString();</li><li> }</li><li>
</li><li> /**</li><li> * json To Array 将String类型的json转换成List对象</li><li> */</li><li> public static List<Person> jsonToArray(String json) {</li><li> if (TextUtils.isEmpty(json)) {</li><li> return null;</li><li> }</li><li> JSONTokener jsonTokener = new JSONTokener(json);</li><li> try {</li><li> JSONArray jsonArray = (JSONArray) jsonTokener.nextValue();</li><li> int jsonLength = jsonArray.length();</li><li> if (jsonLength <= 0) {</li><li> return null;</li><li> }</li><li> List<Person> Persons = new ArrayList<Person>();</li><li> // 遍历jsonArray中每个jsonObiect,取值放入Person对象,将对象加入List</li><li> for (int i = 0; i < jsonLength; i++) {</li><li> JSONObject jsonObject = jsonArray.getJSONObject(i);</li><li> Person p = new Person();</li><li>
</li><li> if (jsonObject.has("naem") && !jsonObject.isNull("name")) {</li><li> p.setName(jsonObject.getString("name"));</li><li> }</li><li> if (jsonObject.has("age") && !jsonObject.isNull("age")) {</li><li> p.setAge(jsonObject.getInt("age"));</li><li> }</li><li> if (jsonObject.has("isVIP") && !jsonObject.isNull("isVIP")) {</li><li> p.setVIP(jsonObject.getBoolean("isVIP"));</li><li> }</li><li> Persons.add(p);</li><li> }</li><li> return Persons;</li><li> } catch (Exception e) {</li><li> // TODO: handle exception</li><li> return null;</li><li> }</li><li> }</li><li>
</li><li> /**</li><li> * json to Array JSONArray to List<?></li><li> * </li><li> */</li><li>
</li><li> public static List<Person> jsonToArray(JSONArray jsonArray) {</li><li>
</li><li> if (jsonArray == null) {</li><li> return null;</li><li> }</li><li> List<Person> Persons = new ArrayList<Person>();</li><li> try {</li><li> int arrayLength = jsonArray.length();</li><li> if (arrayLength < 0) {</li><li> return null;</li><li> }</li><li> for (int index = 0; index < arrayLength; index++) {</li><li> JSONObject jsonObject = jsonArray.getJSONObject(index);</li><li> Person p = new Person();</li><li> if(jsonObject.has("name")&& !jsonObject.isNull("name")){</li><li> p.setName(jsonObject.getString("name"));</li><li> }</li><li> if (jsonObject.has("naem") && !jsonObject.isNull("name")) {</li><li> p.setName(jsonObject.getString("name"));</li><li> }</li><li> if (jsonObject.has("age") && !jsonObject.isNull("age")) {</li><li> p.setAge(jsonObject.getInt("age"));</li><li> }</li><li> if (jsonObject.has("isVIP") && !jsonObject.isNull("isVIP")) {</li><li> p.setVIP(jsonObject.getBoolean("isVIP"));</li><li> }</li><li> Persons.add(p); </li><li> }</li><li> return Persons;</li><li>
</li><li> } catch (Exception e) {</li><li> return null;</li><li> }</li><li>
</li><li> }</li><li>
</li><li>}</li><li><span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span></li></ol>