آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

آموزش JSON در Java

دوره های مرتبط با این مقاله

JSON در زبان برنامه نویسی Java

این مبحث نحوه ی encode/decode کردن اشیا JSON در زبان قدرتمند شی گرای Java را شرح می دهد. برای parse اشیا JSON در زبان Java لازم است ماژول مربوطه را دانلود و سپس نصب نمایید. در این آموزش ما ماژول JSON.simple را دانلود و نصب می کنیم. برای این منظور مکان قرار گیری فایل json-simple-1.1.1.jar را به متغیر محیطی (environment variable) به نام CLASSPATH اضافه می کنیم.

نگاشت از JSON به Java و بالعکس

JSON.simple موجودیت های JSON را به معادل آن در Java و موجودیت های Java را به معادل های آن در JSON تبدیل می کند.

Javaمعادل
JSONمعادل شی
java.lang.String
string
java.lang.Number
number
java.lang.Boolean
true|false
null
null
java.util.List
array
java.util.Map
object

تبدیل شی JSON به معادل آن در Java (encode کردن شی JSON در Java)

در زیر یک مثال ساده را می بینید که در آن با استفاده از JSONObject که یک زیرکلاس از java.util.HashMap هست، شی JSON را به معادل آن در Java تبدیل می کنیم. لازم به ذکر است که در صورت استفاده از این روش، هیچ مرتب سازی (ordering) انجام نمی شود. اگر می خواهید المان ها به صورت دقیق مرتب سازی شوند، در آن صورت بایستی متد JSONValue.toJSONString ( map ) را با یک ordered map implementation نظیر java.util.LinkedHashMap را بکار ببرید.

import org.json.simple.JSONObject;
class JsonEncodeDemo {
  public static void main(String[] args){
     JSONObject obj = new JSONObject();
     obj.put("name", "foo");
     obj.put("num", new Integer(100));
     obj.put("balance", new Double(1000.21));
     obj.put("is_vip", new Boolean(true));
     System.out.print(obj);
  }
}

پس از اجرا و کامپایل، کد فوق خروجی زیر را تولید می کند:

                        {"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

در زیر مثال دیگری را مشاهده می کنید که در آن شی JSON با استفاده از JSONObject تولید می شود:

import org.json.simple.JSONObject;
class JsonEncodeDemo {
  public static void main(String[] args){         
     JSONObject obj = new JSONObject();
     obj.put("name","foo");
     obj.put("num",new Integer(100));
     obj.put("balance",new Double(1000.21));
     obj.put("is_vip",new Boolean(true));
     StringWriter out = new StringWriter();
     obj.writeJSONString(out);    
     String jsonText = out.toString();
     System.out.print(jsonText);
  }
}

پس از اجرا و کامپایل، برنامه ی فوق خروجی زیر را بدست می دهد:

                        {"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

Decode شی JSON در Java

مثال زیر از JSONObject و JSONArray بهره می گیرد. JSONObject یک زیرکلاس (subclass) از java.util.Map و JSONArray زیرکلاسی از java.util.List است. بنابراین می توانید با عملیات متعارف Map یا List به آن ها دسترسی داشته باشید.

import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
  public static void main(String[] args){         
     JSONParser parser = new JSONParser();
     String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";                                        
     try{
        Object obj = parser.parse(s);
        JSONArray array = (JSONArray)obj;                                               
        System.out.println("The 2nd element of array");
        System.out.println(array.get(1));
        System.out.println();
        JSONObject obj2 = (JSONObject)array.get(1);
        System.out.println("Field \"1\"");
        System.out.println(obj2.get("1"));   
        s = "{}";
        obj = parser.parse(s);
        System.out.println(obj);
        s = "[5,]";
        obj = parser.parse(s);
        System.out.println(obj);
        s = "[5,,2]";
        obj = parser.parse(s);
        System.out.println(obj);
     }catch(ParseException pe){   
        System.out.println("position: " + pe.getPosition());
        System.out.println(pe);
     }
  }
}

پس از کامپایل و اجرا، برنامه ی فوق نتیجه ی زیر را برمی گرداند:

The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]

کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده بوده و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.

  • 2073
  •    4
  • تاریخ ارسال :   1395/05/19

دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .