亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

android 讀取json 為什么不直接反序列化

android 讀取json 為什么不直接反序列化

函數式編程 2019-03-21 18:15:28
如題,為什么不直接創建json 對應的實體,再反序列化,然后直接拿到完整的對象。我看到一些人都是去遍歷json 數組。。然后再封裝。。不理解為什么要這樣做,我不是搞android的,輕點拍我。
查看完整描述

4 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

不知道我這種情況是否算一個原因,在從服務器端傳回處理結果的時候。我需要知道服務器端處理的是否成功,所以我會把結果封包到兩個子的json 中,一個用來指示處理狀態,另一個才是結果。這先解析第一個json 包,然后決定如何處理第二個json 的數據。


查看完整回答
反對 回復 2019-04-16
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

json是一種通用格式,服務器返回json,不把json轉成java對象,還能怎樣?


查看完整回答
反對 回復 2019-04-16
?
手掌心

TA貢獻1942條經驗 獲得超3個贊

如果取到json后只拿map傳遞是可行的,而且效率高了那么一丟丟。但是一是維護成本變得高多了吧,下一個接手的人面對一大堆map怎么搞;二是不符合mvc的思想,map與View之間是強耦合的,如果是javabean的話,可以有很多方案去解耦


查看完整回答
反對 回復 2019-04-16
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

我們平時寫的bean類,這個是指定規則的序列化對象,虛擬機認得,你說用json反序列化獲取對象,這個規則是后臺定的,虛擬機如何認得?


而且你說的,很多人一直遍歷json字符串,然后一個字段一個字段的封裝,超級麻煩,我也不知道他們為什么這么做?不管是解析成object對象還是list數據,我都有自己封裝的工具,就兩三行代碼.

如下:


private static Gson sGson;


    public static Gson getGson() {

        if (null == sGson) {

            sGson = new Gson();

        }

        return sGson;

    }

/**

     * 將json字符串轉換成一個對象

     *

     * @param jsonStr json字符串

     * @param field   字段名

     * @param clazz   字節碼

     * @param <T>     類型

     * @return

     */

    public static <T> T getObject(String jsonStr, String field, Class<T> clazz) {

        JSONObject jsonObject = getJSONObject(jsonStr);

        T t = getGson().fromJson(jsonObject.optString(field), clazz);


        return t;

    }


    /**

     * 將json字符串轉換成list數據

     *

     * @param json

     * @param clazz

     * @param <T>

     * @return

     */

    public static <T> List<T> getList(String json, Class<T> clazz) {


        List<T> list = null;


        list = JSON.parseArray(json, clazz);


        return list;

    }

    

     /**

     * 將json字符串轉換成jsonObject

     *

     * @param jsonStr

     * @return

     */

    public static JSONObject getJSONObject(String jsonStr) {

        JSONObject mJson = new JSONObject();

        try {

            mJson = new JSONObject(jsonStr);

        } catch (JSONException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        return mJson;

    }

這個是我個人的理解,也沒有權威的認證過.


查看完整回答
反對 回復 2019-04-16
  • 4 回答
  • 0 關注
  • 636 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號