チケット #37290

登録: 2017-06-19 23:01

最終更新: 2017-06-19 23:05

JSONWriterの順次出力がおかしい

報告者:noda15担当者:(未割り当て)
優先度: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 で解決しているのを見過ごしていました。


追記/更新 #37290 (JSONWriterの順次出力がおかしい)

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