擴充套件閱讀:
[http那些事] json資料
[http那些事]json反序列化
在json反序列化一文的最後,有提到,如果有1m的json文字應該如何來解析?
1m的json string,不管用gson,fastjson,jackson,估計都要oom了吧。本來我想說200m的json資料的,想想這太坑了,就改說1m了。
答案,用jsonreader讀流。比如說:
public user readuser(jsonreader reader) throws ioexception else
if (name.equals("followers_count")) else
}reader.endobject();
return
new user(username, followerscount);
}
我去,要手寫json解析了,這太麻煩了吧。。。
但是你想,跟效能比起來,這些體力也不算什麼了吧。
上述沒太多特別的地方,你可以直接看jsonreader的原始碼注釋,裡面有詳細的用法示例。
在這裡呢,我們先說說如何讓jsonreader來讀大json文字。
filereader in = new filereader(path);
jsonreader reader = new jsonreader(in);
首先,你得先把json文字以檔案的形式存到sd卡上。再通過filereader拿到檔案流,再通過jsonreader來讀流,讀流的方式也就意味著是順序讀的,所以即使它不是正確的json格式,也會一直讀到錯誤為止。
jsonreader對手寫的json解析語法非常嚴格,寫錯是非常頭疼的事,另外建議把nodename變為常量去做判斷,不然以後改變量名得哭瞎。
簡單說下實現過程:
首先寫個介面,比如jsonreaderable,裡面定義乙個方法readfromjson(jsonreader reader)
讓你想要被反序列化的物件pojo實現這個介面,比如這樣
在callback之前再binddata,比如這樣
如果是jsonarray怎麼辦,我們要返回乙個arraylist啊。比如這樣
乙個好的框架相當的重要啊,我們再來看外層的呼叫
這種情況雖然比較少見,但在一些erp啊,sap專案中經常會遇到(別問stay怎麼知道)如果你也見過android上500m的資料庫,那這些心得你都能自己領悟到了。
其實這個擴充套件其他第三方框架也沒什麼問題,只要思路有了,實現起來也就很容易了。
就寫到這裡,別問stay要**哈,只講思維與解決方案,如果你想知道這個http框架是如何從0到1的寫出來的,可以看看stay出的課程自己動手寫http框架
HTTP協議那些事
1 http全程是hypertext transfer protocol 超文字傳輸協議 的簡寫,是tcp ip協議的乙個應用層協議,用於定義web遊覽器和web伺服器之間交換資料的過程,由請求和響應構成,是乙個標準的客戶端服務伺服器模型,乙個無狀態的協議 2 http版本 http 1.0和htt...
http協議那些事
乙個 中包含http協議,當然還有其他的協議,比如上傳檔案是採用tfp協議,還有ip位址,後期我們由於ip位址不容易被記憶,所以就出現了網域名稱,還有埠 ip位址是指某一網路中,唯一的位址 埠是指,伺服器跟伺服器之間的通訊通道 當瀏覽器輸入url的時候會發生什麼 當我們在瀏覽器位址列上輸入要訪問的u...
Http之Auth的那些事
謹以此文獻給那些需要實現http auth的 程式猿 們。關於http auth的文件不多。rfc在 wiki在 使用http auth需要在server端配置http auth資訊 一般是webserver啟動的時候從配置檔案裡面讀取相關資訊 我用中文簡述一下http auth的過程 一次典型的訪...