//1
JSONArray jsonArray2 = JSONArray.fromObject(itemChangeLog2);
for (Object o : jsonArray2) {
System.out.println(o);
if ( o !=null && !o.equals("null")) {
//执行
}
}
//结果 无法走到执行
//2
JSONArray jsonArray2 = JSONArray.fromObject(itemChangeLog2);
for (Object o : jsonArray2) {
System.out.println(o);
if ( o !=null && !"null".equals("o")) {
//执行
}
}
//结果 可以走到执行
原因
- 非”null”字符串放到JSONObject类中时,取出来使用时是java.lang.String类型
- “null”字符串放到JSONObject类中时,取出来的使用会转换成net.sf.json.JSONNull类型
- 当 'null' 在后时 前者为字符对象 o.equals(“null”)
- o.equals(“null”)中的equals调用的是JSONNull中的equals方法
public boolean equals(Object object) {
return object == null || object == this || object == instance || object instanceof JSONObject && ((JSONObject)object).isNullObject() || "null".equals(object);
}
- 当 'null' 在前时 前者为字符对象 “null”.equals(o)
- 此时”null”.equals(o)调用的equals是String类的equals方
/**
2 * String复写的equals方法
3 */
4 public boolean equals(Object anObject) {
5
6 // 比较地址是否相同,两个应用指向同一个对象(同一个地址)
7 if (this == anObject) {
8 return true;
9 }
10
11 // 判断是否是String类
12 if (anObject instanceof String) {
13 String anotherString = (String)anObject;
14 int n = value.length;
15 if (n == anotherString.value.length) {
16 char v1[] = value;
17 char v2[] = anotherString.value;
18 int i = 0;
19 while (n-- != 0) {
20 if (v1[i] != v2[i])
21 return false;
22 i++;
23 }
24 return true;
25 }
26 }
27
28 // 返回结果
29 return false;
30 }