کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش نحوه ی پردازش JSON در اندروید

 

clip_image001

دوره آموزش برنامه نویسی اندروید

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

آموزش نحوه ی پردازش JSON در اندروید

فهرست محتوا

1. Json  و اندروید

2. مثال : خواندن Json از Bugzilla

پروژه

3. نوشتن JSON

1. Json و اندروید

محیط اندروید همچنین حاوی کتابخانه های json.org می باشد که کار با فایل های JSON را به طور قابل چشمگیری موثرتر و به مراتب آسان تر ساخته است.

2. مثال : خواندن Json از Bugzilla

Bugzilla قصد دارد یک رابط REST (Representational State Transfer = سبک معماری نرم افزاری شامل دستور هایی برای تولید و طراحی وب سایت های مقیاس پذیر) ویژه ی کار با فایل های JSON عرضه کند. کافی است یک شناسای یکنواخت منبع (URI = سرنام Uniform Resource Identifier) فراخوانده و JSON را بازیابی کنید.

جدول زیر مثال هایی از Mozilla (که از قبل این قابلیت را به API های قدیمی تر انتقال داده) در این زمینه ارائه می دهد.

جدول 1. Bugzilla URIs

شناسای یکنواخت منبع (URI) 

توصیف 

https://bugzilla.mozilla.org/rest/bug/35  

اطلاعات مرتبط با اشکال (BUG) 35 را بازیابی می کند  

https://bugzilla.mozilla.org/rest/bug/707428/comment  

تمامی توضیحات مربوط به اشکال (BUG) 707428 را بازیابی می کند

 

توجه داشته باشید که برخی URI ها شی JSONObject و برخی دیگر JSONArray را برمی گردانند.

پروژه

پروژه ی جدیدی به نام com.vogella.bugzilla.json با پکیج ای به نام com.vogella.bugzilla.json و activity ای به نام ParseBugzillaActivity ایجاد کنید.

در مرحله اول کدنویسی زیر را برای activity مربوط انجام دهید. کد ذکر شده خوراک (feed) یا تغذیه ی twitter را ویژه ی کاربر twitter به نام vogella دانلود کرده و تعداد ورودی ها و پیام های متنی را در فایل ثبت رخداد (log file) اندروید می نویسد.

package com.vogella.android.bugzilla.json;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import org.apache.http.HttpEntity;

import org.apache.http.HttpResponse;

import org.apache.http.StatusLine;

import org.apache.http.client.ClientProtocolException;

import org.apache.http.client.HttpClient;

import org.apache.http.client.methods.HttpGet;

import org.apache.http.impl.client.DefaultHttpClient;

import org.json.JSONArray;

import org.json.JSONObject;

import android.app.Activity;

import android.os.Bundle;

import android.util.Log;

public class ParseBugzillaActivity extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    # Just for testing، allow network access in the main thread

    # NEVER use this is productive code

    StrictMode.ThreadPolicy policy = new StrictMode.

    ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy);

         setContentView(R.layout.main);

    String input = readBugzilla();

    try {

      JSONObject json = new JSONObject(input);

        Log.i(ParseBugzillaActivity.class.getName()، jsonObject.toString());

      }

    } catch (Exception e) {

      e.printStackTrace();

    }

  }

  public String readBugzilla() {

    StringBuilder builder = new StringBuilder();

    HttpClient client = new DefaultHttpClient();

    HttpGet httpGet = new HttpGet("https://tahlildadeh.com");

    try {

      HttpResponse response = client.execute(httpGet);

      StatusLine statusLine = response.getStatusLine();

      int statusCode = statusLine.getStatusCode();

      if (statusCode == 200) {

        HttpEntity entity = response.getEntity();

        InputStream content = entity.getContent();

        BufferedReader reader = new BufferedReader(new InputStreamReader(content));

        String line;

        while ((line = reader.readLine()) != null) {

          builder.append(line);

        }

      } else {

        Log.e(ParseJSON.class.toString()، "Failed to download file");

      }

    } catch (ClientProtocolException e) {

      e.printStackTrace();

    } catch (IOException e) {

      e.printStackTrace();

    }

    return builder.toString();

  }

}

توجه

نمونه کد فوق به منظور آسان سازی تکه کد (code snippet)، دسترسی به شبکه را توسط نخ اصلی انجام می دهد. با این وجود به شما توصیه می شود همیشه دسترسی به شبکه را از طریق نخ پس زمینه صورت دهید.

برای اجرای این مثال uses-permission را به AndroidManifest.xml ویژه ی "android.permission.INTERNET".  تخصیص دهید.

 

3. نوشتن JSON

نوشتن JSON بسیار آسان است. کافی است JSONObject یا JSONArray را ایجاد کرده، سپس متد toString() را بکار ببرید.

public void writeJSON() {

  JSONObject object = new JSONObject();

  try {

    object.put("name"، "Jack Hack");

    object.put("score"، new Integer(200));

    object.put("current"، new Double(152.32));

    object.put("nickname"، "Hacker");

  } catch (JSONException e) {

    e.printStackTrace();

  }

  System.out.println(object);

}

1394/07/27 9038 3232
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...