修改原生的org.json包

原生的Json在封裝的時候,如果value為空的話,則不會添加這條鍵值對,想實現如果value為空的話也記錄下來。像這種(key:null)。
于是找到Json源碼中的put方法,看到在put的時候有一個判斷,如果value是空的話,則remove了key。把這條代碼注釋一下就好了。

貼上原JSON代碼

 /**
 * Put a key/value pair in the JSONObject. If the value is null, then the
 * key will be removed from the JSONObject if it is present.
 *
 * @param key
 *            A key string.
 * @param value
 *            An object which is the value. It should be of one of these
 *            types: Boolean, Double, Integer, JSONArray, JSONObject, Long,
 *            String, or the JSONObject.NULL object.
 * @return this.
 * @throws JSONException
 *             If the value is non-finite number or if the key is null.
 */
public JSONObject put(String key, Object value) throws JSONException {
    if (key == null) {
        throw new NullPointerException("Null key.");
    }
    if (value != null) {
        testValidity(value);
        this.map.put(key, value);
    } else {
        this.remove(key);
    }
    return this;
}

在使用Json封裝的時候,比如我先put的是一條key為"b"的記錄,然后再put一條key為"a"的記錄,最后打印的字符串是"a"的記錄在前,"b"的記錄在后。想實現按記錄順序來排列,于是查看Json代碼。

發(fā)現在Json實例的時候創(chuàng)建的是HashMap對象

/**
 * Construct an empty JSONObject.
 */
public JSONObject() {
    this.map = new HashMap<String, Object>();
}

然而HashMap會默認將key以hash碼來進行排序的。
于是又默默的改了句代碼。。。
將HashMap改成了LinkedHashMap

 /**
 * Construct an empty JSONObject
 */
public JSONObject() {
    this.map = new LinkedHashMap<String,Object>();
}

<a >加個修改后的源碼與成品鏈接</a>

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 實際上,HashSet 和 HashMap 之間有很多相似之處,對于 HashSet 而言,系統(tǒng)采用 Hash 算...
    曹振華閱讀 2,563評論 1 37
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,663評論 19 139
  • 正文: 你們要查動作,不要查思想。員工的思想不可控,一般人也覺察不到,但他的動作是可以覺察的,動作是思想的...
    自如得己閱讀 425評論 0 0
  • 文/洛小簡 冬天像個淘氣孩,一言不合就哭泣。昨夜還怪她不在,今夜她就灑雨滴。 想在睡前憋出一小詩,夢里再放出我的蝴...
    洛小簡閱讀 271評論 8 4
  • 再過一個月,又是一年畢業(yè)季! 從有象牙塔之稱大學校園進入到那個被人們渲染的足夠“殘酷”和“骨感”的現實社會,請問,...
    博雅大師兄閱讀 1,233評論 5 58

友情鏈接更多精彩內容