Json ID

com.github.kiditz:jsonid

License

License

Categories

Categories

JSON Data
GroupId

GroupId

com.github.kiditz
ArtifactId

ArtifactId

jsonid
Last Version

Last Version

1.0.0
Release Date

Release Date

Type

Type

jar
Description

Description

Json ID
com.github.kiditz:jsonid
Project URL

Project URL

https://github.com/kiditz/jsonid
Source Code Management

Source Code Management

https://github.com/kiditz/jsonid/

Download jsonid

How to add to project

<!-- https://jarcasting.com/artifacts/com.github.kiditz/jsonid/ -->
<dependency>
    <groupId>com.github.kiditz</groupId>
    <artifactId>jsonid</artifactId>
    <version>1.0.0</version>
</dependency>
// https://jarcasting.com/artifacts/com.github.kiditz/jsonid/
implementation 'com.github.kiditz:jsonid:1.0.0'
// https://jarcasting.com/artifacts/com.github.kiditz/jsonid/
implementation ("com.github.kiditz:jsonid:1.0.0")
'com.github.kiditz:jsonid:jar:1.0.0'
<dependency org="com.github.kiditz" name="jsonid" rev="1.0.0">
  <artifact name="jsonid" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.github.kiditz', module='jsonid', version='1.0.0')
)
libraryDependencies += "com.github.kiditz" % "jsonid" % "1.0.0"
[com.github.kiditz/jsonid "1.0.0"]

Dependencies

compile (1)

Group / Artifact Type Version
com.github.kiditz : jsonid jar 1.0.1

Project Modules

There are no modules declared in this project.

JsonID Library

Overview

Framework java untuk serialize dan deserilize Plain Old Java Object (POJO) kedalam format json maupun sebaliknya. untuk dapat menggunakan jsonid anda dapat menemukannya di Maven central repository.

Semua Kelas

  • JsonElement
  • JsonID
  • JsonKesalahan
  • JsonKosong
  • JsonLarik
  • JsonNilai
  • JsonObyek
  • JsonParser
  • JsonPembaca
  • JsonPenulis

Tipe data primitif

JsonID jsonID = JsonID.baru().aktifkanSpasi();
jsonID.keJson(1);//int
jsonID.keJson(0.177f);//float
jsonID.keJson(Long.MAX_VALUE);//long
jsonID.keJson(Short.MAX_VALUE);//long
jsonID.keJson(new int[]{1, 2, 3, 4, 5});//integer array
jsonID.keJson(new float[]{1.1f, 2.1f, 3.1f, 4.3f, 5.2f});//float array
jsonID.keJson(new boolean[]{true, false, false, true})//

Serialize Obyek Otomatis

Note: JsonID menggunakan reflection untuk dapat melakukan serialize obyek secara otomatis

class User{
  private String username;
  private String password;
  //Getter And Setter
}

Menggunakan kelas User

User user = new User();
user.setUsername("kiditz");
user.setPassword("ganteng");

Serialize Plain Old Java Object ke json

JsonID jsonID = JsonID.baru();
System.out.println(jsonID.keJson(user));

//Hasil
{"username":"kiditz","password":"ganteng"}

Hal tersebut dapat digunakan tapi sangat sulit untuk dibaca, untuk dapat memudahkan pembacaan maka anda perlu mengaktifkan spasi yang dapat anda aktifkan dengan

JsonID jsonID = JsonID.baru().aktifkanSpasi();
System.out.println(jsonID.keJson(user));

//Hasil
{
  "username": "kiditz",
  "password": "ganteng",
}

Serialize Larik

  • Pertama tama ubah kelas user menjadi seperti ini
static class User{
  private String username;
  private String password;
  private Larik skills = new Larik();
  //Getter dan Setter
}
  • Lalu...

Bhang!! jsonid akan menambahkan tag yang berupa nama kelas yang di gunakan untuk membentuk larik saat ia tidak di inisialisasi dengan kelas yang seharusnya. selain menggunakan kelas larik anda juga dapat menggunakan ArrayList, Set, dan kelas-kelas lain yang memiliki sifat Collection. juga dapat melakukan serialize terhadap kelas-kelas yang memiliki sifat Map atau dapat juga menggunakan kelas kustom PetaObyek yang sudah di sediakan oleh JsonID sejak versi 1.0.0

User user = new User();
user.setUsername("kiditz");
user.setPassword("ganteng");
user.setSkills(new Larik(new Skill("Java", "Android"),new Skill("Java", "J2EE"), new Skill("Java", "J2SE")));
JsonID jsonID = JsonID.baru().aktifkanSpasi();
System.out.println(jsonID.keJson(user));
//Hasil
{
  "username": "kiditz",
  "password": "ganteng",
  "skills": [
    {
      "kelas": "org.raden.json.test.JsonIdTest$Skill",
      "programming": "Java",
      "operatingSystem": "Android"
    },
    {
      "kelas": "org.raden.json.test.JsonIdTest$Skill",
      "programming": "Java",
      "operatingSystem": "J2EE"
    },
    {
      "kelas": "org.raden.json.test.JsonIdTest$Skill",
      "programming": "Java",
      "operatingSystem": "J2SE"
    }
  ]
}

Untuk dapat memperbaiki hal ini maka kita perlu mengatur tipe element yang dapat membuat ulang obyek larik agar memiliki argument seperti Larik<Skill> dimana field yang ditulis di dalam kelas user harus sama dengan parameter nama field yang di tentukan saat menggunakan method aturTipeElement();

JsonID jsonID = JsonID.baru().aktifkanSpasi().aturTipeElement(User.class, "skills", Skill.class);
System.out.println(jsonID.keJson(user));
//Hasil
{
  "username": "kiditz",
  "password": "ganteng",
  "skills": [
    {
      "programming": "Java",
      "operatingSystem": "Android"
    },
    {
      "programming": "Java",
      "operatingSystem": "J2EE"
    },
    {
      "programming": "Java",
      "operatingSystem": "J2SE"
    }
  ]
}

Deserialize Obyek Otomatis

  • Obyek Deserialize
User user = new User();
user.setUsername("kiditz");
user.setPassword("ganteng");
user.setSkills(new Larik(new Skill("Java", "Android"),new Skill("Java", "J2EE"), new Skill("Java", "J2SE")));
JsonID jsonID = JsonID.baru().aktifkanSpasi().aturTipeElement(User.class, "skills", Skill.class);
String out = jsonID.keJson(user);
System.out.println(out);
User user2 = jsonID.dariJson(out, User.class);
System.out.println(user2);

{
  "username": "kiditz",
  "password": "ganteng",
  "skills": [
    {
      "programming": "Java",
      "operatingSystem": "Android"
    },
    {
      "programming": "Java",
      "operatingSystem": "J2EE"
    },
    {
      "programming": "Java",
      "operatingSystem": "J2SE"
    }
  ]
}
//Hasil deserialize
User [username=kiditz, password=ganteng, skills=[Skill [programming=Java, operatingSystem=Android], Skill [programming=Java, operatingSystem=J2EE], Skill [programming=Java, operatingSystem=J2SE]]]

e__Note :__ Obyek dariJson *merupakan root untuk dapat melakukan pembacaan json yang akan membaca semua bidang ataupun semua benda yang ditemui dalam file berformat json secara recrusive. tipe diketahui dan tipe element juga dapat digunakan oleh method kJson . hal ini hanya akan berguna jika jenis json benar-benar diketahui, jika takut kelas tersebut ambigu dengan nilai json, kita dapat menginisialisasikannya dengan tipe Object . * Sebagai contoh :

User user = new User();
user.setUsername("kiditz");
user.setPassword("ganteng");
user.setSkills(new Larik(new Skill("Java", "Android"),new Skill("Java", "J2EE"), new Skill("Java", "J2SE")));

//May be user come from internet and it is unknown json format because you only read that from Http Method
JsonID jsonID = JsonID.baru().aktifkanSpasi().aturTipeElement(User.class, "skills", Skill.class);
String out = jsonID.keJson(user, Object.class);
System.out.println(out);
Object object = jsonID.dariJson(out, Object.class);
System.out.println(object);

Serialize Obyek Manual

Untuk menulis json dengan menggunakan metode dom seperti file xml maka dapat menggunakan JsonPenulis untuk dapat membuat map, nilai, larik dan lain-lain.

StringWriter writer = new StringWriter();
JsonPenulis penulis = new JsonPenulis(writer);
penulis.mulaiObyek();
penulis.nama("username").nilai("kiditz");
penulis.nama("binatang");
penulis.mulaiLarik();
penulis.nilai("gajah").nilai("buaya").nilai("baygon").nilai("sianida");
penulis.akhirLarik();
penulis.akhirObyek();
System.out.println(writer.toString());
String json = writer.toString();
//Hasil 
{"username":"kiditz","binatang":["gajah","buaya","baygon","sianida"]}

Deserialize Obyek Manual

JsonPembaca pembaca = new JsonPembaca(new StringReader(json));
JsonParser parser = new JsonParser();
JsonElement element = parser.parse(pembaca);
if(element.iniObyek()){
	JsonObyek obyek = element.sebagaiObyek();
	System.out.println(obyek.raih("username"));
  JsonLarik larik = obyek.raih("binatang").sebagaiLarik();
  int i = 1;
  for (JsonElement element2 : larik) {
     System.out.print(element2.sebagaiString());
     if (i++ != larik.ukuran()) {
       System.out.print(", ");
     }
	}
}
// Hasil

"kiditz"
gajah
buaya
baygon
sianida

Serialize dengan Dom Element

  • JsonObyek
JsonObyek obyek = JsonObyek.baru();
obyek.tambah(String.class.getName(), new JsonNilai(String.format("%s", "this is from string")));
obyek.tambah(Integer.class.getName(), new JsonNilai(Integer.MAX_VALUE));
obyek.tambah(Short.class.getName(), new JsonNilai(Short.MAX_VALUE));
obyek.tambah(Boolean.class.getName(), new JsonNilai(false));
obyek.tambah(Double.class.getName(), new JsonNilai(Double.MAX_EXPONENT));
obyek.tambah(Long.class.getName(), new JsonNilai(Long.MAX_VALUE));
obyek.tambah(Float.class.getName(), new JsonNilai(Float.MAX_VALUE));
obyek.tambah(Byte.class.getName(), new JsonNilai(Byte.toString("this is byte roger".getBytes()[0])));
System.out.println(obyek.toString());
//Hasil
{
  "java.lang.String": "this is from string",
  "java.lang.Integer": 2147483647,
  "java.lang.Short": 32767,
  "java.lang.Boolean": "false",
  "java.lang.Double": 1023,
  "java.lang.Long": 9223372036854775807,
  "java.lang.Float": 3.4028235E38,
  "java.lang.Byte": "116"
}
  • JsonLarik
JsonLarik larik = JsonLarik.baru();
larik.tambah(true);
larik.tambah("hei");
larik.tambah(Float.MAX_VALUE);
larik.tambah(Integer.MAX_VALUE);
larik.tambah(Long.MAX_VALUE);
larik.tambah(Short.MAX_VALUE);
larik.tambah(Byte.MAX_VALUE);
larik.tambah(Double.MAX_VALUE);

//Hasil
[
  "true",
  "hei",
  3.4028235E38,
  2147483647,
  9223372036854775807,
  32767,
  127,
  1.7976931348623157E308
]

*Note * Untuk dapat membaca dengan menggunakan dom maka anda dapat melihat kembali penjelasan mengenai JsonParser dan JsonPembaca yang sudah di jelaskan sebelumnya.

Versions

Version
1.0.0