import static org.boon.Boon.puts;
import java.io.File;
import java.io.InputStream;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.boon.Lists;
import org.boon.core.Dates;
import org.boon.json.JsonFactory;
import org.boon.json.ObjectMapper;
public class BoonJsonTutorial {
public static class SampleBean {
String name = "gfg";
@Override
public String toString() {
return "SampleBean{" +
"name='" + name + '\'' +
'}';
}
}
public static class GeekUser {
public enum Gender { MALE, FEMALE };
public static class Name {
private String first, last;
public Name( String _first, String _last ) {
this.first = _first;
this.last = _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; }
@Override
public String toString() {
return "Name{" +
"first='" + first + '\'' +
", last='" + last + '\'' +
'}';
}
}
private Gender gender;
private Name name;
private boolean verified;
private Date birthDate;
public Name getName() { return name; }
public boolean isVerified() { return verified; }
public Gender getGender() { return gender; }
public void setName(Name n) { name = n; }
public void setVerified(boolean b) { verified = b; }
public void setGender(Gender g) { gender = g; }
public Date getBirthDate() { return birthDate; }
public void setBirthDate( Date birthDate ) { this.birthDate = birthDate; }
@Override
public String toString() {
return "GeekUser{" +
"gender=" + gender +
", name=" + name +
", isVerified=" + verified +
'}';
}
}
public static void example1 () throws Exception {
SampleBean myBean = new SampleBean();
File destination = File.createTempFile("geekuser", ".json");
ObjectMapper mapper = JsonFactory.create();
puts ("json string = ", mapper.writeValueAsString( myBean ));
// where 'dst' can be File, OutputStream or Writer
mapper.writeValue( destination, myBean );
File src = destination;
// 'src' can be File, InputStream, Reader, String
SampleBean value = mapper.readValue(src, SampleBean.class);
puts ("samplebean = ", value);
Object root = mapper.readValue(src, Object.class);
Map<String,Object> rootAsMap = mapper.readValue(src, Map.class);
puts ("root = ", root);
puts ("rootAsMap = ", rootAsMap);
SampleBean sampleBean1 = new SampleBean(); sampleBean1.name = "GeekPerson1";
SampleBean sampleBean2 = new SampleBean(); sampleBean2.name = "GeekPerson2";
destination = File.createTempFile("geekList", ".json");
final List<SampleBean> list = Lists.list( sampleBean1, sampleBean2 );
puts ("json string = ", mapper.writeValueAsString( list ));
mapper.writeValue( destination, list );
src = destination;
List<SampleBean> beans = mapper.readValue(src, List.class, SampleBean.class);
puts ("samplebeans = ", beans);
}
public static void example2 () throws Exception {
ObjectMapper mapper = JsonFactory.create();
GeekUser user = new GeekUser();
user.setGender( GeekUser.Gender.MALE );
user.setName(new GeekUser.Name("Rachel", "Green"));
user.setVerified( true );
user.setBirthDate( Dates.getUSDate( 5, 25, 1980 ) );
puts (mapper.writeValueAsString( user ));
// Now to write and then read this as a file.
File file = File.createTempFile( "geekuser", ".json" );
mapper.writeValue( file, user );
GeekUser userFromFile = mapper.readValue( file, GeekUser.class );
puts ( "userFromFile = ", userFromFile );
Path path = Paths.get(file.toString());
InputStream inputStream = Files.newInputStream(path);
GeekUser userFromInput = mapper.readValue( inputStream, GeekUser.class );
puts ( "userFromInput = ", userFromInput );
Reader reader = Files.newBufferedReader( path, StandardCharsets.UTF_8 );
GeekUser userFromReader = mapper.readValue( reader, GeekUser.class );
puts ( "userFromReader = ", userFromReader );
}
public static void main (String args[]) throws Exception {
example1();
example2();
}
}