diff --git a/json-tutorials/json-fastjson-example/pom.xml b/json-tutorials/json-fastjson-example/pom.xml
new file mode 100644
index 0000000..785685c
--- /dev/null
+++ b/json-tutorials/json-fastjson-example/pom.xml
@@ -0,0 +1,33 @@
+
+
+ 4.0.0
+
+ net.aimeizi
+ json-tutorials
+ 1.0.0
+
+ json-fastjson-example
+ jar
+ json-fastjson-example
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+ com.alibaba
+ fastjson
+ 1.1.36
+
+
+
diff --git a/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/FastjsonDecode.java b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/FastjsonDecode.java
new file mode 100644
index 0000000..3ae28b9
--- /dev/null
+++ b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/FastjsonDecode.java
@@ -0,0 +1,22 @@
+package org.json.fastjson.example;
+
+import java.util.List;
+
+import com.alibaba.fastjson.JSON;
+
+public class FastjsonDecode {
+
+ public static void main(String[] args) {
+ String jsonString = "{\"id\":0,\"name\":\"admin\",\"users\":[{\"id\":2,\"name\":\"guest\"},{\"id\":3,\"name\":\"root\"}]}";
+ Group group = JSON.parseObject(jsonString, Group.class);
+
+ System.out.println(group.getId());
+ System.out.println(group.getName());
+ List users = group.getUsers();
+ for (User user : users) {
+ System.out.println(user.getId()+"\t"+user.getName());
+ }
+
+ }
+
+}
diff --git a/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/FastjsonEncode.java b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/FastjsonEncode.java
new file mode 100644
index 0000000..7e0955e
--- /dev/null
+++ b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/FastjsonEncode.java
@@ -0,0 +1,30 @@
+package org.json.fastjson.example;
+
+import com.alibaba.fastjson.JSON;
+
+public class FastjsonEncode {
+
+ public static void main(String[] args) {
+
+ Group group = new Group();
+ group.setId(0L);
+ group.setName("admin");
+
+ User guestUser = new User();
+ guestUser.setId(2L);
+ guestUser.setName("guest");
+
+ User rootUser = new User();
+ rootUser.setId(3L);
+ rootUser.setName("root");
+
+ group.getUsers().add(guestUser);
+ group.getUsers().add(rootUser);
+
+ String jsonString = JSON.toJSONString(group);
+
+ System.out.println(jsonString);
+
+ }
+
+}
diff --git a/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/Group.java b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/Group.java
new file mode 100644
index 0000000..78d1764
--- /dev/null
+++ b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/Group.java
@@ -0,0 +1,36 @@
+package org.json.fastjson.example;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Group {
+
+ private Long id;
+ private String name;
+ private List users = new ArrayList();
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public List getUsers() {
+ return users;
+ }
+
+ public void setUsers(List users) {
+ this.users = users;
+ }
+
+}
diff --git a/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/User.java b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/User.java
new file mode 100644
index 0000000..cd48317
--- /dev/null
+++ b/json-tutorials/json-fastjson-example/src/main/java/org/json/fastjson/example/User.java
@@ -0,0 +1,24 @@
+package org.json.fastjson.example;
+
+public class User {
+
+ private Long id;
+ private String name;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+}
diff --git a/json-tutorials/json-gson-example/pom.xml b/json-tutorials/json-gson-example/pom.xml
new file mode 100644
index 0000000..f69fe91
--- /dev/null
+++ b/json-tutorials/json-gson-example/pom.xml
@@ -0,0 +1,34 @@
+
+
+ 4.0.0
+
+ net.aimeizi
+ json-tutorials
+ 1.0.0
+
+ json-gson-example
+ jar
+ json-gson-example
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ junit
+ junit
+ 4.6
+ test
+
+
+ com.google.code.gson
+ gson
+ 1.7.1
+
+
+
+
diff --git a/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/DataObject.java b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/DataObject.java
new file mode 100644
index 0000000..5e926f6
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/DataObject.java
@@ -0,0 +1,51 @@
+package org.json.gson.example;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@SuppressWarnings("serial")
+public class DataObject implements Serializable{
+
+ private int data1 = 100;
+ private String data2 = "hello";
+
+ private List list = new ArrayList() {
+ {
+ add("String 1");
+ add("String 2");
+ add("String 3");
+ }
+ };
+
+ @Override
+ public String toString() {
+ return "DataObject [data1=" + data1 + ", data2=" + data2 + ", list="
+ + list + "]";
+ }
+
+ public int getData1() {
+ return data1;
+ }
+
+ public void setData1(int data1) {
+ this.data1 = data1;
+ }
+
+ public String getData2() {
+ return data2;
+ }
+
+ public void setData2(String data2) {
+ this.data2 = data2;
+ }
+
+ public List getList() {
+ return list;
+ }
+
+ public void setList(List list) {
+ this.list = list;
+ }
+
+}
diff --git a/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/Gson2Json.java b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/Gson2Json.java
new file mode 100644
index 0000000..b2b6c12
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/Gson2Json.java
@@ -0,0 +1,34 @@
+package org.json.gson.example;
+
+import java.io.FileWriter;
+import java.io.IOException;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+public class Gson2Json {
+
+ public static void main(String[] args) {
+
+ DataObject obj = new DataObject();
+ Gson gson = new GsonBuilder().setPrettyPrinting().create();
+
+ // convert java object to JSON format,
+ // and returned as JSON formatted string
+ String json = gson.toJson(obj);
+
+ try {
+ //write converted json data to a file named "file.json"
+ FileWriter writer = new FileWriter("src/main/resources/file.json");
+ writer.write(json);
+ writer.close();
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ System.out.println(json);
+
+ }
+
+}
diff --git a/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonFromJson.java b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonFromJson.java
new file mode 100644
index 0000000..6054130
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonFromJson.java
@@ -0,0 +1,24 @@
+package org.json.gson.example;
+
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.IOException;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+public class GsonFromJson {
+
+ public static void main(String[] args) {
+ Gson gson = new GsonBuilder().setPrettyPrinting().create();
+ try {
+ BufferedReader br = new BufferedReader(new FileReader("src/main/resources/file.json"));
+ // convert the json string back to object
+ DataObject obj = gson.fromJson(br, DataObject.class);
+ System.out.println(obj);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonStreamReaderExample.java b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonStreamReaderExample.java
new file mode 100644
index 0000000..35ece76
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonStreamReaderExample.java
@@ -0,0 +1,57 @@
+package org.json.gson.example;
+
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+
+import com.google.gson.stream.JsonReader;
+
+public class GsonStreamReaderExample {
+
+ public static void main(String[] args) {
+
+ try {
+ JsonReader reader = new JsonReader(new FileReader("src/main/resources/user.json"));
+
+ reader.beginObject();
+
+ while (reader.hasNext()) {
+
+ String name = reader.nextName();
+
+ if (name.equals("name")) {
+
+ System.out.println(reader.nextString());
+
+ } else if (name.equals("age")) {
+
+ System.out.println(reader.nextInt());
+
+ } else if (name.equals("messages")) {
+
+ // read array
+ reader.beginArray();
+
+ while (reader.hasNext()) {
+ System.out.println(reader.nextString());
+ }
+
+ reader.endArray();
+
+ } else {
+ reader.skipValue(); // avoid some unhandle events
+ }
+ }
+
+ reader.endObject();
+ reader.close();
+
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+
+}
diff --git a/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonStreamWriterExample.java b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonStreamWriterExample.java
new file mode 100644
index 0000000..a592d7d
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/java/org/json/gson/example/GsonStreamWriterExample.java
@@ -0,0 +1,38 @@
+package org.json.gson.example;
+
+import java.io.FileWriter;
+import java.io.IOException;
+
+import com.google.gson.stream.JsonWriter;
+
+public class GsonStreamWriterExample {
+
+ public static void main(String[] args) {
+
+ JsonWriter writer;
+ try {
+ writer = new JsonWriter(new FileWriter("src/main/resources/user.json"));
+
+ writer.beginObject(); // {
+ writer.name("name").value("mkyong"); // "name" : "mkyong"
+ writer.name("age").value(29); // "age" : 29
+
+ writer.name("messages"); // "messages" :
+ writer.beginArray(); // [
+ writer.value("msg 1"); // "msg 1"
+ writer.value("msg 2"); // "msg 2"
+ writer.value("msg 3"); // "msg 3"
+ writer.endArray(); // ]
+
+ writer.endObject(); // }
+
+ writer.close();
+
+ System.out.println("Done");
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+}
diff --git a/json-tutorials/json-gson-example/src/main/resources/file.json b/json-tutorials/json-gson-example/src/main/resources/file.json
new file mode 100644
index 0000000..32dbe08
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/resources/file.json
@@ -0,0 +1,9 @@
+{
+ "data1": 100,
+ "data2": "hello",
+ "list": [
+ "String 1",
+ "String 2",
+ "String 3"
+ ]
+}
\ No newline at end of file
diff --git a/json-tutorials/json-gson-example/src/main/resources/user.json b/json-tutorials/json-gson-example/src/main/resources/user.json
new file mode 100644
index 0000000..ec904ed
--- /dev/null
+++ b/json-tutorials/json-gson-example/src/main/resources/user.json
@@ -0,0 +1 @@
+{"name":"mkyong","age":29,"messages":["msg 1","msg 2","msg 3"]}
\ No newline at end of file
diff --git a/json-tutorials/json-jackson-example/pom.xml b/json-tutorials/json-jackson-example/pom.xml
new file mode 100644
index 0000000..47dc080
--- /dev/null
+++ b/json-tutorials/json-jackson-example/pom.xml
@@ -0,0 +1,40 @@
+
+
+ 4.0.0
+
+ net.aimeizi
+ json-tutorials
+ 1.0.0
+
+ json-jackson-example
+ jar
+ json-jackson-example
+ http://maven.apache.org
+
+
+ UTF-8
+
+
+
+
+ codehaus
+ http://repository.codehaus.org/org/codehaus
+
+
+
+
+
+ junit
+ junit
+ 4.6
+ test
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ 1.9.9
+
+
+
diff --git a/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonGeneratorExample.java b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonGeneratorExample.java
new file mode 100644
index 0000000..2357d8f
--- /dev/null
+++ b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonGeneratorExample.java
@@ -0,0 +1,49 @@
+package org.json.jackson.example;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonEncoding;
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.JsonGenerator;
+import org.codehaus.jackson.map.JsonMappingException;
+
+public class JacksonGeneratorExample {
+
+ public static void main(String[] args) {
+
+ try {
+
+ JsonFactory jfactory = new JsonFactory();
+
+ /*** write to file ***/
+ JsonGenerator jGenerator = jfactory.createJsonGenerator(new File("src/main/resources/user.json"), JsonEncoding.UTF8);
+ jGenerator.writeStartObject(); // {
+
+ jGenerator.writeStringField("name", "mkyong"); // "name" : "mkyong"
+ jGenerator.writeNumberField("age", 29); // "age" : 29
+
+ jGenerator.writeFieldName("messages"); // "messages" :
+ jGenerator.writeStartArray(); // [
+
+ jGenerator.writeString("msg 1"); // "msg 1"
+ jGenerator.writeString("msg 2"); // "msg 2"
+ jGenerator.writeString("msg 3"); // "msg 3"
+
+ jGenerator.writeEndArray(); // ]
+
+ jGenerator.writeEndObject(); // }
+
+ jGenerator.close();
+
+ } catch (JsonGenerationException e) {
+ e.printStackTrace();
+ } catch (JsonMappingException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonParserExample.java b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonParserExample.java
new file mode 100644
index 0000000..d7176e8
--- /dev/null
+++ b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonParserExample.java
@@ -0,0 +1,78 @@
+package org.json.jackson.example;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonFactory;
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.JsonParser;
+import org.codehaus.jackson.JsonToken;
+import org.codehaus.jackson.map.JsonMappingException;
+
+public class JacksonParserExample {
+
+ public static void main(String[] args) {
+
+ try {
+
+ JsonFactory jfactory = new JsonFactory();
+
+ /*** read from file ***/
+ JsonParser jParser = jfactory.createJsonParser(new File("src/main/resources/user.json"));
+
+ // loop until token equal to "}"
+ while (jParser.nextToken() != JsonToken.END_OBJECT) {
+
+ String fieldname = jParser.getCurrentName();
+ if ("name".equals(fieldname)) {
+
+ // current token is "name",
+ // move to next, which is "name"'s value
+ jParser.nextToken();
+ System.out.println(jParser.getText()); // display mkyong
+
+ }
+
+ if ("age".equals(fieldname)) {
+
+ // current token is "age",
+ // move to next, which is "name"'s value
+ jParser.nextToken();
+ System.out.println(jParser.getIntValue()); // display 29
+
+ }
+
+ if ("messages".equals(fieldname)) {
+
+ jParser.nextToken(); // current token is "[", move next
+
+ // messages is array, loop until token equal to "]"
+ while (jParser.nextToken() != JsonToken.END_ARRAY) {
+
+ // display msg1, msg2, msg3
+ System.out.println(jParser.getText());
+
+ }
+
+ }
+
+ }
+ jParser.close();
+
+ } catch (JsonGenerationException e) {
+
+ e.printStackTrace();
+
+ } catch (JsonMappingException e) {
+
+ e.printStackTrace();
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+
+ }
+
+ }
+
+}
diff --git a/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonTreeNode.java b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonTreeNode.java
new file mode 100644
index 0000000..f8f0a73
--- /dev/null
+++ b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JacksonTreeNode.java
@@ -0,0 +1,64 @@
+package org.json.jackson.example;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.Iterator;
+
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.node.ObjectNode;
+
+public class JacksonTreeNode {
+
+ public static void main(String[] args) {
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ try {
+
+ BufferedReader fileReader = new BufferedReader(new FileReader("src/main/resources/user.json"));
+ JsonNode rootNode = mapper.readTree(fileReader);
+
+ /*** read ***/
+ JsonNode nameNode = rootNode.path("name");
+ System.out.println(nameNode.getTextValue());
+
+ JsonNode ageNode = rootNode.path("age");
+ System.out.println(ageNode.getIntValue());
+
+ JsonNode msgNode = rootNode.path("messages");
+ Iterator ite = msgNode.getElements();
+
+ while (ite.hasNext()) {
+ JsonNode temp = ite.next();
+ System.out.println(temp.getTextValue());
+ }
+
+ /*** update ***/
+ ((ObjectNode) rootNode).put("nickname", "new nickname");
+ ((ObjectNode) rootNode).put("name", "updated name");
+ ((ObjectNode) rootNode).remove("age");
+
+ mapper.writerWithDefaultPrettyPrinter().writeValue(new File("target/user.json"), rootNode);
+
+ } catch (JsonGenerationException e) {
+
+ e.printStackTrace();
+
+ } catch (JsonMappingException e) {
+
+ e.printStackTrace();
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+
+ }
+
+ }
+
+}
diff --git a/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/Json2Object.java b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/Json2Object.java
new file mode 100644
index 0000000..2a3e4a2
--- /dev/null
+++ b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/Json2Object.java
@@ -0,0 +1,41 @@
+package org.json.jackson.example;
+
+import java.io.IOException;
+
+import org.codehaus.jackson.JsonGenerationException;
+import org.codehaus.jackson.map.JsonMappingException;
+import org.codehaus.jackson.map.ObjectMapper;
+
+public class Json2Object {
+
+ /**
+ * @param args
+ */
+ public static void main(String[] args) {
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ try {
+
+ // read from file, convert it to user class
+ User user = mapper.readValue(ClassLoader.getSystemResourceAsStream("user.json"), User.class);
+
+ // display to console
+ System.out.println(user);
+
+ } catch (JsonGenerationException e) {
+
+ e.printStackTrace();
+
+ } catch (JsonMappingException e) {
+
+ e.printStackTrace();
+
+ } catch (IOException e) {
+
+ e.printStackTrace();
+
+ }
+ }
+
+}
diff --git a/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JsonFile2Map.java b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JsonFile2Map.java
new file mode 100644
index 0000000..5571464
--- /dev/null
+++ b/json-tutorials/json-jackson-example/src/main/java/org/json/jackson/example/JsonFile2Map.java
@@ -0,0 +1,40 @@
+package org.json.jackson.example;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Map;
+
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
+
+public class JsonFile2Map {
+
+ public static void main(String[] args) {
+
+ try {
+
+ ObjectMapper mapper = new ObjectMapper();
+
+ // read JSON from a file
+ Map map = mapper.readValue(
+ new File("src/main/resources/user.json"),
+ new TypeReference