Blogroll

Kamis, 11 Juni 2015

Membaca dan Menulis JSON Mudah dengan C#.NET

JSON , alternatif ringan dari XML

JSON adalah singkatan dari JavaScript Object Notation yang merupakan sistem standarisasi terbuka ( umum ) berbasis teks. JSON dapat dibandingkan dengan XML sebagai standar umum dalam transaksi/pertukaran file atau informasi dengan beragam media dan bahasa pemrograman. Hal ini dapat terjadi karena JSON juga dapat mewakili berbagai struktur data umum seperti array dan object ( huruf O dari singkatan JSON berarti Object ) yang berarti JSON dapat dipakai untuk menyimpan deskripsi berbagai object, seperti orang, events, dan berbagai object lain ke dalam file atau string. Singkat kata, JSON memiliki fungsi yang sama dengan XML, kecuali cara penulisan dan kecepatan baca yang ditawarkan.
JSON seringkali dipergunakan dalam web  terutama karena JSON didukung secara native oleh JavaScript. Contoh dalam JavaScript:
?
1
2
3
myJSON = {"age" : 12,
 
"name" : "Danielle"}
Contoh di atas dapat di baca dengan mudah oleh JavaScript dengan JSON.parse() :
?
1
2
3
4
anObject = JSON.parse(myJSON);
anObject.age == 12 # True
anObject.name == "Danielle" # True
anObject.age == "12" # False

dari contoh dapat dilihat bahwa JSON dapat langsung melakukan parsing terhadap file JSON di atas. Untuk informasi lebih lengkap tentang JSON, anda dapat mengunjungi : http://www.json.org/

Coding

Beberapa waktu yang lalu penulis menemukan cara yang sangat singkat untuk melakukan pembacaan dan penulisan file JSON dengan mempergunakan JSON.NET library yang disediakan oleh James Newtonking di http://json.codeplex.com/ Anda juga dapat melihat API dan help library ini di http://james.newtonking.com/. Penulis akan membuat program sederhana yang dapat membaca semua masukan data dari data grid view dan kemudian menjadikannya sebagai object. Lalu menyimpannya dalam JSON dan membaca JSON tersebut kembali dan menjadikannya sebagai object kembali.
  1. Langkah pertama, download JSON Library di http://json.codeplex.com/
    JSON .NET webpage
    Tampilan JSON .NET webpage
  2. Kemudian extract file yang baru Anda download. Tempatkan sesuai dengan keinginan Anda.
  3. Buat project baru di Microsoft Visual Studio atau equivalen. Pilih project Windows Forms Application ( lihat gambar ). Beri nama project sesuai keinginan Anda. Buat project baru pilih  File >New > Project . Lalu pilih Visual C# dan pada bagian template pilih Windows Forms Application.
    Buat project baru
    Pembuatan Project Baru
    Pilih Visual C# dan pada bagian template pilih Windows Forms Application
    Pilih Visual C# dan pada bagian template pilih Windows Forms Application
  4. Buat project kita mereferensi ke library yang baru Anda dibuat. Buka Solution Explorer di sebelah kanan layar, pilih project (node yang berisi nama project ini ).
    buka solution explorer
    Tampilan Solution Explorer
  5. Kemudian klik kanan pada node pilih add reference. Akan muncul dialog, Pilih tab Browse, cari tempat di mana anda mengextract file tadi ( biasanya /Json45r5/bin/<versi>/Newtonsoft.Json.dll).  Untuk versi NET Framework yang Anda pakai, umumnya jadi satu dengan paket instalasi Visual Studio. Untuk versi 2010 dan 2012 beta pakai Net40, versi 2008 pakai Net35 dan seterusnya.
    pilih add reference
    Klik Kanan pada Node Pilih Add Reference
    tampilan Add Reference
    Tampilan Add Reference
  6. Selanjutnya pilih file Newtonsoft.Json.dll yang sesuai dengan platform yang Anda inginkan.
    pilih platform
    Pilih Newtonsoft.Json.dll
  7. Setelah selesai pilih file Newtonsoft.Json.dll dan klik OK, Jika berhasil akan tampak entry baru di solution explorer seperti pada gambar :
    Tampilan baru
    Muncul Tampilan Baru pada Solution Explorer
  8. Ubah tampilan di windows form anda menjadi seperti pada gambar dengan mendrag 2 button pada windows form, datagridview, dan textbox dengan properti multiline di enable :
    ubah tampilan di windows form
    Mengubah Tampilan di Windows Form
  9. Ubah bagian using directive menjadi :
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using Newtonsoft.Json; // untuk memasukkan library dalam project
    using System.Windows.Forms;
  10. Buat Class Employee di bagian bawah di luar classForm1
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Employee
    {
    public string Name;
    public int Age;
    public Employee(string name, int age)
    {
    this.Name = name;
    this.Age = age;
    }
    }
  11. Lalu anda dapat menyalin kode berikut ke dalam file Form1.cs:
    ?
    1
    2
    3
    4
    5
    6
    7
    // buat object Employee dari class Employee
    privateEmployee employee;
    // buat array dari class List<type>
    List<Employee> eList = newList<Employee>();
    // file json akan berada di folder yang sama dengan file
    // exe ( debug folder )
    conststring alamatFile = @".\json.txt";
  12. Berikut adalah rutin bagi event click button “Masukkan data” dengan perintah ini maka semua keterangan dalam bentuk object akan diubah menjadi JavaScript Object Notationdan masuk ke dalam file
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    privatevoid button1_Click(object sender, EventArgs e)
    {
    // buat instance yang akan menyimpan hasil dalam List()
    List<Employee> listHasil = newList<Employee>();
    // buat juga string yang akan dipergunakan untuk menyimpan text hasil
    // pembacaan file json
    string ans = "";
    // jika file json yang di maksud tidak ada maka buat file json
    // jika sudah ada maka tinggal membacanya
    if (System.IO.File.Exists(alamatFile) == false)
    {
    System.IO.File.Create(alamatFile);
    }
    else
    {
    // baca yang lama dan masukkan hasil bacaan ke ans
    System.IO.StreamReader reader = new
    System.IO.StreamReader(alamatFile);
    ans = reader.ReadToEnd();
    // ubah string dalam ans tadi menjadi object Employee dan
    // masukkan langsung ke dalam listHasil
    listHasil = JsonConvert.DeserializeObject<List<Employee>>(ans);
    // jika listHasil tidak ada isinya menunjukkan kalau file text
    // yang dimaksud tidak memiliki isi
    // jika demikian maka buat instance baru dari listHasil
    if (listHasil == null)
    listHasil = newList<Employee>();
    // tutup reader
    reader.Close();
    }
    // proses membaca semua data dalam datagridview
    // buat instance dari class Employee dan masukkan dalam list<>
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
    if (row.Cells[0].Value != null)
    {
    employee = newEmployee(
    row.Cells[0].Value.ToString(),
    int.Parse(row.Cells[1].Value.ToString()));
    listHasil.Add(employee);
    }
    }
    // selesai dibaca maka ubah eList ke dalam string dengan
    // serializeObject()
    // dan tuliskan semua teks tersebut dalam file
    ans = JsonConvert.SerializeObject(listHasil, Formatting.Indented);
    System.IO.File.WriteAllText(alamatFile, ans);
    }
  13. Yang menjadi perhatian dalam potongan kode di atas adalah kemampuan library dalam mengubah semua string dari hasil pembacaan JSON file menjadi object yang kemudian di proses lebih lanjut untuk menjadi instance bagi List<Employee>hanya dengan satu baris perintah :
    ?
    1
    listHasil = JsonConvert.DeserializeObject<List<Employee>>(ans);
    dan kemudian dapat mengubah object dalam ListHasil menjadi JSON string juga dengan panjang satu baris dengan method SerializeObject :
    ?
    1
    ans = JsonConvert.SerializeObject(listHasil, Formatting.Indented);
    Sementara bagi rutin bagi tombol yang akan dipergunakan untuk membaca file tersebut merupakan pengulangan dari rutin di atas dengan sedikit modifikasi. Pada Intinya sama dengan proses pembacaan data pada file JSON di atas. Anda dapat melihat source lengkapnya di link yang penulis sediakan.

Kesimpulan

JSON telah lama dipergunakan dalam dunia web. Tetapi selain itu, JSON dapat juga dipergunakan sebagai pengganti dari XML sebagai format penulisan data dalam file dengan beragam variasi penulisan yang anda dapat tentukan sendiri. Kelebihan JSON terletak pada kecepatan dan kemudahan penggunaanya. String dari JSON sendiri jauh lebih mudah di baca daripada XML. Selain itu proses penulisan dan pemanggilan data dari JSON dalam platform NET dengan hadirnya library JSON for NET.

0 komentar:

Posting Komentar