Backendhabit

Backendhabit

Cara mudah konversi JSON ke dalam Java Object

Cara mudah konversi JSON ke dalam Java Object

Introduction Dijaman yang serba menggunakan internet ini,maka kebutuhan lalu lintas data pun sangat lah cepat. Salah satu API yang banyak digunakan sekarang ini yaitu REST dengaa menggunakan message format json maka pada sisi development juga akan sangat mudah digunakan. Java adalah bahasa static beda dengan bahasa-bahasa scripting seperi PHP, Javascript yang bisa dengan mudah melakukan transformasi pesan json, tapi dijava sendiri perlu sebuah trik khusus supaya requirement itu terpenuhi. Salah satunya yaitu

Prerequisites

  1. JDK 1.8 atau lebih
  2. Maven
  3. IDE Favorit kalian

Pembahasan Buatlah sebuah maven project dan tambahkan dependency atau library ini

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

Kalian bisa mendapatkannya di link ini https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.12.4

Berikut adalah file json yang akan kita pakai, dalam contoh kasus ini kita akan mentransform json person ke dalam object person

json object

{
   "nama":"Teten Nugraha",
   "kota":"Bandung",
   "email":"teten@mail.com"
}

json list

[
   {
      "nama":"Teten Nugraha",
      "kota":"Bandung",
      "email":"teten@mail.com"
   },
   {
      "nama":"Budi Gunawan",
      "kota":"Garut",
      "email":"budi@mail.com"
   },
   {
      "nama":"Agus Cahya",
      "kota":"Tasik",
      "email":"agus@mail.com"
   }
]

Dari json object diatas, kita bisa melihat bahwa kita memerlukan atribut nama, kota dan email untuk itu buatlah sebuah class entitas dalam java code dengan nama Person seperti dibawah ini.

public class Person {

    private String nama;
    private String kota;
    private String email;

    public Person() {
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getKota() {
        return kota;
    }

    public void setKota(String kota) {
        this.kota = kota;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "Person{" +
                "nama='" + nama + '\'' +
                ", kota='" + kota + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

dengan method ini, kita bisa menstransform json ke dalam object java

private static List<Person> transformToObjList(String personStrList) throws JsonProcessingException {
        return Arrays.asList(objectMapper.readValue(personStrList, Person[].class));
    }

    private static Person transformToObj(String personStr) throws JsonProcessingException {
        return objectMapper.readValue(personStr, Person.class);
    }

Berikut adalah contoh yang saya buat dalam IDE saya,

package id.ten.latihan;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.util.Arrays;
import java.util.List;

public class ProcessingJson {

    final static ObjectMapper objectMapper = new ObjectMapper();

    public static void main(String[] args) {

        final String personStr = "{\n" +
                "   \"nama\":\"Teten Nugraha\",\n" +
                "   \"kota\":\"Bandung\",\n" +
                "   \"email\":\"teten@mail.com\"\n" +
                "}";

        final String personStrList = "[\n" +
                "   {\n" +
                "      \"nama\":\"Teten Nugraha\",\n" +
                "      \"kota\":\"Bandung\",\n" +
                "      \"email\":\"teten@mail.com\"\n" +
                "   },\n" +
                "   {\n" +
                "      \"nama\":\"Budi Gunawan\",\n" +
                "      \"kota\":\"Garut\",\n" +
                "      \"email\":\"budi@mail.com\"\n" +
                "   },\n" +
                "   {\n" +
                "      \"nama\":\"Agus Cahya\",\n" +
                "      \"kota\":\"Tasik\",\n" +
                "      \"email\":\"agus@mail.com\"\n" +
                "   }\n" +
                "]";

        try{
            final Person person = transformToObj(personStr);
            final List<Person> personList = transformToObjList(personStrList);

            System.out.println("Get One Object");
            System.out.println(person.toString()+"\n\n");

            System.out.println("Get form list");
            personList.forEach(val -> System.out.println(val));

        }catch (JsonProcessingException e) {
            System.out.println("failed when transforming json");
        }


    }

    private static List<Person> transformToObjList(String personStrList) throws JsonProcessingException {
        return Arrays.asList(objectMapper.readValue(personStrList, Person[].class));
    }

    private static Person transformToObj(String personStr) throws JsonProcessingException {
        return objectMapper.readValue(personStr, Person.class);
    }

}

jika kita run, maka hasilnya adalah sebagai berikut,

Get One Object
Person{nama='Teten Nugraha', kota='Bandung', email='teten@mail.com'}


Get form list
Person{nama='Teten Nugraha', kota='Bandung', email='teten@mail.com'}
Person{nama='Budi Gunawan', kota='Garut', email='budi@mail.com'}
Person{nama='Agus Cahya', kota='Tasik', email='agus@mail.com'}

Kesimpulan Seperti yang kita lihat, menggunakan library ini kita bisa dengan mudah mengkonvert json file ke dalam object Java. Selain ObjectMapper, kita juga bisa menggunakan Gson.

 
Share this