搜尋

首頁  >  問答  >  主體

android - Java后台把数据用json发到手机端,里面是map存放的,必须要说明数据的类型?

               List<HashMap> reList = new ArrayList<HashMap>();
                      for(int i=0;i<bjdList.size();i++){
                          Zqwl_yd_jdxx bjd = bjdList.get(i);
                          HashMap temp = new HashMap();
                          temp.put("id",bjd.getId());
                          temp.put("yd_number",bjd.getYd_number());
                          temp.put("status",bjd.getStatus());
                          reList.add(temp);
                      }
                
                 str = JSONValue.toJSONString(reList);
                 response.getWriter().write(str);

我写后台的接口,ios的程序员说必须标注每一个值得类型(string int 。。。)Android的程序员就不用?转正json返回之后不都是字符串了吗?为什么还要标注出int类型?

PHPzPHPz2893 天前401

全部回覆(9)我來回復

  • ringa_lee

    ringa_lee2017-04-18 09:17:18

    既然是協議,就要雙方約定好,最好有接口文檔說明,json雖然只是字符串,但裡面的值是有類型區別的,android說他不用標註也許只是他覺得他能看懂你json數據的類型(但不一定是你後端本來想給的資料類型,例如你給float型,他用double取,對於精度要求不高的數值,是沒什麼區別的),而iOS的可能想清楚嚴謹一點,他想確定確切的值類型,這時候一定要統一一下,要不以後出問題了你們就說不清了。

    回覆
    0
  • PHPz

    PHPz2017-04-18 09:17:18

    json本來就只是字串而已。
    並不需要,我跟ios程式設計師對接的時候並沒有這類問題。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:17:18

    不用標註的 ~

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:17:18

    我覺得讓你標註出來是對的。
    我遇到NSNumber,和NSString 這個導致程式崩潰的問題

    回覆
    0
  • 黄舟

    黄舟2017-04-18 09:17:18

    實際上是JSON是有類型的,""擴起來的才是字符串,"value":"1" 和"value":1是不同的,
    當然IOS說的一定要標註,只是他那邊不想處理,希望後台能處理好直接用,android只是幫你處理了而已。

    這不分誰對誰錯,而只是誰願意多做點。

    回覆
    0
  • 怪我咯

    怪我咯2017-04-18 09:17:18

    這個問題的核心在於準確理解JSON這種格式的定義
    JSON中的控製字元
    { 鍵-值對容器(A collection of name/value pairs)的開始
    } 鍵-值對容器的結束
    [ 陣列容器的開始
    ] 陣列容器的結束
    : 鍵-值對分隔符號
    「 字串的開始或結束
    , 容器內部的分隔符號
    JSON中的值的類型
    string 兩個雙引號中間的部分,官網號中間的部分,官網號原文是由雙引號包圍的任意數量Unicode字元的集合,使用反斜線轉義。 '開頭,官網原文除去未曾使用的八進位與十六進位格式, 在OC中的表現為NSNumber物件.
    object 物件類型,在OC中的表現為NSDictionary
    值的有序列表(An ordered list of values ),俗稱array,在OC中的表現為NSArray
    null null對象,空對象,在OC中的表現為NSNull
    bool true/false 由於OC中並沒有關於Boolean對象的存在,所以在OC中的表現為NSNumber

    可以看我的播客

    http://cocoa1024.com/2016/03/31/stackjson/

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:17:18

    Json只是一種格式,在接收時可以把他都當做字串,但在解析的時候的時候值是分類型的

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:17:18

    oia文件呢,沒oia起碼要有json schema吧

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 09:17:18

    不需要,map也能夠直接解析

    {"aaa,bbb";"aaa,bbb"}

       ArrayMap arrayMap = new ArrayMap();
          try {
               org.json.JSONObject obj = new org.json.JSONObject(content);
               Iterator<String> iterator = obj.keys();
               while (iterator.hasNext()) {
                   String key = iterator.next();
                   String value = (String) obj.get(key);
                   arrayMap.put(key, value);
                }
            } catch (JSONException e) {
                e.printStackTrace();
          }

    回覆
    0
  • 取消回覆