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" } |
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.- Langkah pertama, download JSON Library di http://json.codeplex.com/
- Kemudian extract file yang baru Anda download. Tempatkan sesuai dengan keinginan Anda.
- 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 kita mereferensi ke library yang baru Anda dibuat. Buka Solution Explorer di sebelah kanan layar, pilih project (node yang berisi nama project ini ).
- 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.
- Selanjutnya pilih file Newtonsoft.Json.dll yang sesuai dengan platform yang Anda inginkan.
- Setelah selesai pilih file Newtonsoft.Json.dll dan klik OK, Jika berhasil akan tampak entry baru di solution explorer seperti pada gambar :
- 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 bagian using directive menjadi :
123456789
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;
- Buat Class Employee di bagian bawah di luar classForm1
12345678910
public
class
Employee
{
public
string
Name;
public int Age;
public Employee
(
string
name
,
int age
)
{
this.Name
=
name
;
this.Age
=
age;
}
}
- Lalu anda dapat menyalin kode berikut ke dalam file Form1.cs:
1234567
/
/
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"
;
- 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
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
privatevoid button
1
_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
dataGridView
1.
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
)
;
}
- 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
)
;
1ans
=
JsonConvert.SerializeObject
(
listHasil
,
Formatting.Indented
)
;
0 komentar:
Posting Komentar