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 は単なる文字列ですが、その中の値にはさまざまな型があります。彼がそれをマークする必要がないのは、おそらく彼があなたを理解できると考えているからです (ただし、それは必ずしもバックエンドが元々提供しようとしていたデータ型であるとは限りません。たとえば、あなたがfloat 型の場合、それを取得するために double を使用します。高精度を必要としない値には違いはありません)、iOS はより厳密に、正確な値の型を決定したいと考えている可能性があります。現時点でそれを統一しなければなりません。そうしないと、将来問題が発生するかどうかを判断できなくなります。
黄舟2017-04-18 09:17:18
実際には、JSON には型があります。展開された "" は文字列です。
もちろん、IOS はマークする必要があると言っていますが、彼はマークしません。彼は、バックグラウンドでそれを処理し、Android が直接処理できることを望んでいます。
誰が正しいか間違っているかは問題ではなく、誰がより多くのことを行う意欲があるかです。
怪我咯2017-04-18 09:17:18
この問題の核心は、JSON 形式の定義を正確に理解することです
JSON の制御文字
{キーと値のペアのコンテナーの始まり (名前と値のペアのコレクション)
} Key- 値ペアのコンテナの終了
[配列コンテナの開始
] 配列コンテナの終了
: キーと値のペアの区切り文字
" 文字列
の開始または終了、コンテナ内の区切り文字
JSON
文字列の値の型は、2 つの二重引用符で囲まれた部分です。公式 Web サイトの元のテキストは、二重引用符で囲まれた任意の数の Unicode 文字の集合です。文字列は、OC では文字「0」または「9」で始まる NSString オブジェクト
number として表されます。元の公式 Web サイトでは、未使用の 8 進数および 16 進数形式が除外され、OC では
オブジェクトとして表されます。オブジェクト タイプ、OC では NSDictionary
として表現される値の順序付きリスト (値の順序付きリスト)、一般に配列として知られ、OC では NSArray
として表現されます。 null null オブジェクト、空のオブジェクト、OC でのパフォーマンスNSNull
bool true/false です。OC にはブール値オブジェクトがないため、OC でのパフォーマンスは NSNumber
私のポッドキャストをご覧いただけます
http://cocoa1024.com/2016/03/31/stackjson/