Ticket #37290

JSONWriterの順次出力がおかしい

Open Date: 2017-06-19 23:01 Last Update: 2017-06-19 23:05

Reporter: noda15 Owner: (None)
Type: Bugs Status: Closed
Component: (None) MileStone: (None)
Priority: 5 - Medium Severity: 5 - Medium
Resolution: None

Details

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. }

Attachment File List

No attachments

Ticket History (2/2 Histories)

2017-06-19 23:01 Updated by: noda15
  • New Ticket "JSONWriterの順次出力がおかしい" created
2017-06-19 23:05 Updated by: noda15
  • Ticket Close date is changed to 2017-06-19 23:05
  • Status Update from Open to Closed
Comment

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

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login