مشخصات مقاله
-
3232
-
0.0
-
9038
-
0
-
0
آموزش نحوه ی پردازش JSON در اندروید
دوره آموزش برنامه نویسی اندروید
کلیه حقوق مادی و معنوی این مقاله متعلق به آموزشگاه تحلیل داده می باشد و هر گونه استفاده غیر قانونی از آن پیگرد قانونی دارد.
آموزش نحوه ی پردازش 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);
}
