android - Java后台把数据用json发到手机端,里面是map存放的,必须要说明数据的类型?
PHPz
PHPz 2017-04-18 09:15:18
0
9
388
               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类型?

PHPz
PHPz

学习是最好的投资!

全部回覆(9)
左手右手慢动作

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

PHPzhong

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

Peter_Zhu

不用標註的 ~

伊谢尔伦

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

黄舟

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

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

刘奇

這個問題的核心在於準確理解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/

Peter_Zhu

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

伊谢尔伦

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

小葫芦

不需要,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();
      }
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板