DNJson uses reflection so it does not require additional modifications to classes of (de)serialized objects. In fact it just needs the class to have defined default no-args constructor (not entirely true, see Features).
This library compatible with Java 6+
Gradle:
compile 'com.github.fedorchuck:dnjson:0.1.0'
Maven:
<dependency>
<groupId>com.github.fedorchuck</groupId>
<artifactId>dnjson</artifactId>
<version>0.1.0</version>
</dependency>
JAR-files:
https://oss.sonatype.org/content/repositories/releases/com/github/fedorchuck/dnjson/
The following example demonstrates the most basic usage of DNJson when serializing a sample object:
public class Car {
private String manufacturer;
private String model;
private Double capacity;
private boolean accident;
private Car() {
}
public Car(String manufacturer, String model, Double capacity, boolean accident) {
this.manufacturer = manufacturer;
this.model = model;
this.capacity = capacity;
this.accident = accident;
}
@Override
public String toString() {
return("Manufacturer: " + manufacturer + ", " + "Model: " + model + ",
" + "Capacity: " + capacity + ", " + "Accident: " + accident);
}
}
public class Person {
private String name;
private String surname;
private Car[] cars;
private int phone;
private transient int age;
private Person() {
}
public Person(String name, String surname, int phone, int age, Car[] cars) {
this.name = name;
this.surname = surname;
this.cars = cars;
this.phone = phone;
this.age = age;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("Name: " + name + " " + surname + "\n");
sb.append("Phone: " + phone + "\n");
sb.append("Age: " + age + "\n");
int i = 0;
for (Car item : cars) {
i++;
sb.append("Car " + i + ": " + item + "\n");
}
return sb.toString();
}
}
After calling
DNJson dnjson = new DNJson();
Car audi = new Car("Audi", "A4", 1.8, false);
Car skoda = new Car("Škoda", "Octavia", 2.0, true);
Car[] cars = {audi, skoda};
Person johnDoe = new Person("John", "Doe", 245987453, 35, cars);
System.out.println(dnjson.toJson(johnDoe));
you will get this output:
{
"name": "John",
"surname": "Doe",
"cars": [
{
"manufacturer": "Audi",
"model": "A4",
"capacity": 1.8,
"accident": false
},
{
"manufacturer": "Škoda",
"model": "Octavia",
"capacity": 2,
"accident": true
}
],
"phone": 245987453
}
Since the Person's field age
is marked as transient, it is not included in the output.
To deserialize output produced by last example, you can execute the following code:
DNJson dnjson = new DNJson();
String json =
"{\"name\":\"John\",\"surname\":\"Doe\",\"cars\":
[{\"manufacturer\":\"Audi\",\"model\":\"A4\",\"capacity\":1.8,\"accident\":false},
{\"manufacturer\":\"Škoda\",\"model\":\"Octavia\",\"capacity\":2.0,\"accident\":true}],
\"phone\":245987453}";
Person johnDoe = dnjson.fromJson(json, Person.class);
System.out.println(johnDoe.toString());
And the following output will be generated:
Name: John Doe
Phone: 245987453
Age: 0
Car 1: Manufacturer: Audi, Model: A4, Capacity: 1.8, Accident: false
Car 2: Manufacturer: Škoda, Model: Octavia, Capacity: 2.0, Accident: true
See changelog file
This software is licensed under Apache License 2.0