搜尋

首頁  >  問答  >  主體

android端,如何防止服务器json数据变化导致的异常,比如忽然多一个或者少一个字段,字符串类型变成一个对象类型等等?

android端,如何防止服务器json数据变化导致的异常,比如忽然多一个或者少一个字段,字符串类型变成一个对象类型等等?

巴扎黑巴扎黑2772 天前765

全部回覆(8)我來回復

  • 怪我咯

    怪我咯2017-04-17 17:32:57

    這個的按照介面文件來吧,隨意更改這個是沒法處理的。要更改必須的同時改吧。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 17:32:57

    這個應該跟服務端說好,不應愛輕易變的。如果一定要變,可以用gson建實體類別的方式解析,這樣增加的欄位不會對程式有影響,要改也好改。資料解析也可以寫兩個方法,一個是解析不變的字段,一個是可能會改變的,這樣即使改變了也不會影響正常運行,只是無法得到改變的字段

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 17:32:57

    我們只對異常做了處理,伺服器回傳異常,把根佈局GONE掉,然後給個提示。正式環境不應該出現json格式變化這種容易引發崩潰的問題。當然如果你們確實會有這種情況,在initData的時候加上一個方法,逐一判空。沒想到什麼很精妙的方法...

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:32:57

    用Gson吧,即使多一個或少一個欄位也不會報錯,最多欄位為null而已。在佈局上面多做非空判斷就好!一般來說後台字段變更是必須通知前段的

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 17:32:57

    一般情況下把可能出現的所有欄位都寫到bean裡面,然後都給個初始值。
    如果欄位的類型不確定,直接用Object和List就可以,到時候判斷一下類型。
    我還遇過更誇張的,List裡面的元素都有不同類型,當時我用的是List

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 17:32:57

    向你的老闆舉報,同事亂TM改後台。

    ——解決這種問題,很沒意義,這意味著寫額外的程式碼去處理一些人為的蠢事。

    這種事情應該是在團隊溝通時解決的。該用溝通解決的事情,就不要用科技去解決,有如頭痛醫腳。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 17:32:57

    1、找到問題的根源,是服務端隨意更改還是說當初給的對象字段沒有說清楚
    2、這是涉及服務端的契約性,需要確定;如果服務端違反契約性,你直接找你的leader ,讓他去跟服務端方面協調

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 17:32:57

    和後端溝通清楚,什麼介面回傳什麼欄位+類型,要變的話記得通知

    回覆
    0
  • 取消回覆