How to convert POJO to JSON and vice versa? How to convert POJO to JSON and vice versa? json json

How to convert POJO to JSON and vice versa?


Take a look at https://www.json.org

[edited]Imagine that you have a simple Java class like this:

public class Person {    private String name;    private Integer age;    public String getName() { return this.name; }    public void setName( String name ) { this.name = name; }    public Integer getAge() { return this.age; }    public void setAge( Integer age ) { this.age = age; }}

So, to transform it to a JSon object, it's very simple. Like this:

import org.json.JSONObject;public class JsonTest {    public static void main( String[] args ) {        Person person = new Person();        person.setName( "Person Name" );        person.setAge( 333 );        JSONObject jsonObj = new JSONObject( person );        System.out.println( jsonObj );    }}

Hope it helps.

[edited]Here there is other example, in this case using Jackson: https://brunozambiazi.wordpress.com/2015/08/15/working-with-json-in-java/

Maven:

<dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>2.6.1</version></dependency>

And a link (below) to find the latest/greatest version:

https://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22com.fasterxml.jackson.core%22%20AND%20a%3A%22jackson-databind%22


If you are aware of Jackson 2, there is a great tutorial at mkyong.com on how to convert Java Objects to JSON and vice versa. The following code snippets have been taken from that tutorial.

Convert Java object to JSON, writeValue(...):

ObjectMapper mapper = new ObjectMapper();Staff obj = new Staff();//Object to JSON in filemapper.writeValue(new File("c:\\file.json"), obj);//Object to JSON in StringString jsonInString = mapper.writeValueAsString(obj);

Convert JSON to Java object, readValue(...):

ObjectMapper mapper = new ObjectMapper();String jsonInString = "{'name' : 'mkyong'}";//JSON from file to ObjectStaff obj = mapper.readValue(new File("c:\\file.json"), Staff.class);//JSON from URL to ObjectStaff obj = mapper.readValue(new URL("http://mkyong.com/api/staff.json"), Staff.class);//JSON from String to ObjectStaff obj = mapper.readValue(jsonInString, Staff.class);

Jackson 2 Dependency:

<dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>2.6.3</version></dependency>

For the full tutorial, please go to the link given above.


We can also make use of below given dependency and plugin in your pom file - I make use of maven. With the use of these you can generate POJO's as per your JSON Schema and then make use of code given below to populate request JSON object via src object specified as parameter to gson.toJson(Object src) or vice-versa. Look at the code below:

Gson gson = new GsonBuilder().create();String payloadStr = gson.toJson(data.getMerchant().getStakeholder_list());Gson gson2 = new Gson();Error expectederr = gson2.fromJson(payloadStr, Error.class);

And the Maven settings:

<dependency>    <groupId>com.google.code.gson</groupId>    <artifactId>gson</artifactId>    <version>1.7.1</version></dependency><plugin>    <groupId>com.googlecode.jsonschema2pojo</groupId>    <artifactId>jsonschema2pojo-maven-plugin</artifactId>    <version>0.3.7</version>    <configuration>        <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>        <targetPackage>com.example.types</targetPackage>    </configuration>    <executions>        <execution>            <phase>generate-sources</phase>            <goals>                <goal>generate</goal>            </goals>        </execution>    </executions></plugin>