java中的null对象和"null"字符串,JSonObject会默认对这些数据进行处理。
考虑到这样一种场景:发送方和接收方通过json格式数据进行交互
// key = null,这种键值对会直接被json-lib忽略 // key = "null",这种值会被json-lib转换null public static String sendJmsString() { JSONObject selfObj = new JSONObject(); selfObj.put("name", "aty"); selfObj.put("address", "null"); selfObj.put("school", null); selfObj.put("home", ""); return selfObj.toString(); }
?
public static void receiveJmsString(String msg) { JSONObject selfObj = JSONObject.fromObject(msg); Object name = selfObj.get("name"); Object home = selfObj.get("home"); //net.sf.json.JSONNull Object address = selfObj.get("address"); String strAddress = selfObj.getString("address"); System.out.println(name.getClass()); System.out.println(address.getClass()); System.out.println(home.getClass()); System.out.println(address == null);//false System.out.println("null".equals(strAddress));//true }
?
?
测试代码如下:
public static void main(String[] args) { String msg = sendJmsString(); // null是json中的关键字 //msg = {"name":"aty","address":null,"home":""} System.out.println("msg = " + msg); receiveJmsString(msg); }
?
?
由此可见在是json进行数据传递的时候,要特殊注意null对象和"null"这种键值对,不然会出现错误