チケット #37290

JSONWriterの順次出力がおかしい

登録: 2017-06-19 23:01 最終更新: 2017-06-19 23:05

報告者:
担当者:
(未割り当て)
チケットの種類:
状況:
完了
コンポーネント:
(未割り当て)
マイルストーン:
(未割り当て)
優先度:
5 - 中
重要度:
5 - 中
解決法:
なし

詳細

JSONWriter において、順次出力で、Object や Array が入れ子になった場合に、内側のObject や Array の最後に、区切りのカンマが出力されない。

例えば、以下のコードを実行すると、 {"bar":[]"foo":[]"baz":[]} という出力が得られる。 ただし、3行目のコメントアウトしてあるものを、コメントアウトは外すと、 {"":"","bar":[],"foo":[],"baz":[]} と正しく表示される。 つまり、 writer.value() が呼び出されないと、カンマを出力しない。

  1. public void test_Jsonic() {
  2. try {
  3. HashMap h = new HashMap<String, Object>() ;
  4. //h.put("", "") ;
  5. h.put("foo", new ArrayList<Object>()) ;
  6. h.put("bar", new ArrayList<Object>()) ;
  7. h.put("baz", new ArrayList<Object>()) ;
  8. Set<Map.Entry<String, Object>> s = h.entrySet() ;
  9. JSONWriter writer = new JSON().getWriter((OutputStream)System.out) ;
  10. writer.beginObject() ;
  11. for(Map.Entry<String,Object> entry : s) {
  12. writer.name(entry.getKey());
  13. if(entry.getValue() instanceof List) {
  14. writer.beginArray();
  15. for(Object obj : (List)entry.getValue()) {
  16. writer.value(obj) ;
  17. }
  18. writer.endArray();
  19. } else {
  20. writer.value(entry.getValue()) ;
  21. }
  22. }
  23. writer.endObject() ;
  24. System.out.close() ;
  25. } catch(Exception e) {
  26. System.err.println("Error") ;
  27. } ;
  28. }

添付ファイルリスト

添付ファイルはありません

チケットの履歴 (2 件中 2 件表示)

2017-06-19 23:01 更新者: noda15
  • 新しいチケット "JSONWriterの順次出力がおかしい" が作成されました
2017-06-19 23:05 更新者: noda15
  • チケット完了時刻2017-06-19 23:05 に更新されました
  • 状況オープン から 完了 に更新されました
コメント

1.3.10 で解決しているのを見過ごしていました。

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする