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 ));
mapper.writeValue( destination, myBean );
File src = destination;
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 ));
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();
}
}