JSR353ではJSONのデータを扱うAPIの仕様について明記しています。今年に入って正式に標準化が決まったようです。
APIが入れられるパッケージはjavax.jsonとのことです。
この仕様のゴールは以下のAPIが開発されることです。
- Produce and consume JSON text in a streaming fashion(similar to StAX API for XML)
- Build a Java object model for JSON text using API classes(similar to DOM API for XML)
- Binding of JSON text to Java objects and vice versa.
既存のJSONデータを扱うパッケージは以下のようなものがあります。
Jacksonは以下のような簡単にPOJOで扱える仕組みです。
- ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
- User user = mapper.readValue(new File("user.json"), User.class);
- public class User {
- public enum Gender { MALE, FEMALE };
- public static class Name {
- private String _first, _last;
- public String getFirst() { return _first; }
- public String getLast() { return _last; }
- public void setFirst(String s) { _first = s; }
- public void setLast(String s) { _last = s; }
- }
- private Gender _gender;
- private Name _name;
- private boolean _isVerified;
- private byte[] _userImage;
- public Name getName() { return _name; }
- public boolean isVerified() { return _isVerified; }
- public Gender getGender() { return _gender; }
- public byte[] getUserImage() { return _userImage; }
- public void setName(Name n) { _name = n; }
- public void setVerified(boolean b) { _isVerified = b; }
- public void setGender(Gender g) { _gender = g; }
- public void setUserImage(byte[] b) { _userImage = b; }
- }
- {
- "name" : { "first" : "Joe", "last" : "Sixpack" },
- "gender" : "MALE",
- "verified" : false,
- "userImage" : "Rm9vYmFyIQ=="
- }