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类型?
ringa_lee2017-04-18 09:17:18
既然是協議,就要雙方約定好,最好有接口文檔說明,json雖然只是字符串,但裡面的值是有類型區別的,android說他不用標註也許只是他覺得他能看懂你json數據的類型(但不一定是你後端本來想給的資料類型,例如你給float型,他用double取,對於精度要求不高的數值,是沒什麼區別的),而iOS的可能想清楚嚴謹一點,他想確定確切的值類型,這時候一定要統一一下,要不以後出問題了你們就說不清了。
黄舟2017-04-18 09:17:18
實際上是JSON是有類型的,""擴起來的才是字符串,"value":"1" 和"value":1是不同的,
當然IOS說的一定要標註,只是他那邊不想處理,希望後台能處理好直接用,android只是幫你處理了而已。
這不分誰對誰錯,而只是誰願意多做點。
怪我咯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/
高洛峰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();
}