JSON,
javascript'in bir alt kümesi olan düzenli bir şekilde XML gibi içerik
kategorileme dilidir. JSON XML'e göre daha da hızlıdır, daha pratiktir. XML
gibi bütün programlama dillerinde etkin bir şekilde kullanılabilir.
Yapı olarak XML e çok benzeyen JSON tipinin ana amacı veri
alış verişi yaparken daha küçük boyutlarda veri alıp göndermektir. Ayrıca
kullanımı da çok kolaydır.
XML ve JSON karşılaştırması için bir örnek verelim. Bunun
için Müşteri datalarını tuttuğumuzu varsayalım.
XML Örneği
01
|
<musteriler>
|
|
02
|
<musteri>
|
03
|
<kod>120.01.001</kod>
|
|
04
|
<ad>Microsoft</ad>
|
05
|
<unvan>Microsoft
AŞ.</unvan>
|
|
06
|
</musteri>
|
07
|
<musteri>
|
|
08
|
<kod>120.01.002</kod>
|
09
|
<ad>Google</ad>
|
|
10
|
<unvan>Google
AŞ.</unvan>
|
11
|
</musteri>
|
|
12
|
<musteri>
|
13
|
<kod>120.01.003</kod>
|
|
14
|
<ad>Yahoo</ad>
|
15
|
<unvan>Yahoo
AŞ.</unvan>
|
|
16
|
</musteri>
|
17
|
<musteri>
|
|
18
|
<kod>120.01.004</kod>
|
19
|
<ad>Apple</ad>
|
|
20
|
<unvan>Apple
AŞ.</unvan>
|
21
|
</musteri>
|
|
22
|
</musteriler>
|
Şimdide bunu JSON ile ifade edelim.
01
|
{musteriler:[
|
|
02
|
{
|
03
|
"kod":"120.01.001",
|
|
04
|
"ad"="Microsoft",
|
05
|
"unvan"="Microsoft
AŞ",
|
|
06
|
}
|
07
|
{
|
|
08
|
"kod":"120.01.002",
|
09
|
"ad"="Google",
|
|
10
|
"unvan"="Google
AŞ",
|
11
|
}
|
12
|
{
|
13
|
"kod":"120.01.003",
|
|
14
|
"ad"="Yahoo",
|
15
|
"unvan"="Yahoo
AŞ",
|
|
16
|
}
|
17
|
{
|
|
18
|
"kod":"120.01.004",
|
19
|
"ad"="Apple",
|
|
20
|
"unvan"="Apple
AŞ",
|
21
|
}
|
|
22
|
]}
|
Gördüğünüz üzere kodumuz oldukça azaldı ve yazması-okumasıda kolaylaştı.
Böyle 3-5 elemanlı örneklerde per bir performans
göremesenizde 1000-2000 elemanlı örneklerde performans oldukça farkedecektir.
Java ile JSON okumak için org.json kütüphanesine ihtiyaç
duyacağız.Bu kütüphaneyi buradan
indirebilirsiniz.Kütüphaneyi projemize ekledikten sonra artık kodlama kısmına
geçebiliriz.
JsonReader.java
public class JsonReader
{
private static String readAll(Reader
rd) throws IOException {
StringBuilder sb = new StringBuilder();
int
cp;
while
((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return
sb.toString();
}
public
static JSONObject
readJsonFromUrl(String url) throws
IOException, JSONException {
InputStream is = new URL(url).openStream();
try
{
BufferedReader rd = new BufferedReader(new
InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText =
readAll(rd);
JSONObject json = new JSONObject(jsonText);
return
json;
} finally
{
is.close();
}
}
public
static void main(String[]
args) throws IOException, JSONException {
JSONObject json =
readJsonFromUrl("http://findyourmp.parliament.uk/api/search?q=bob&f=js");
System.out.println(json.toString());
for
(int i = 0; i < json.getJSONObject("results").getJSONArray("members").length();
i++) {
System.out.println("İsim:" +
json.getJSONObject("results").getJSONArray("members").getJSONObject(i).get("member_name"));
}
}
Bu kodların çıktısı aşağıda ki gibi olur.
A JSONObject text must begin with '{' at 1 [character 2 line 1] hatası veriyor kod
YanıtlaSil