SlideShare a Scribd company logo
1 of 37
Android JSON Parsing
МБДС – МТТ Ш.Энхтамир/маг/
Агуулга
 JSON гэж юу вэ?
 JSON – ний бүтэц
 JSON Array болон JSON объект
 JSON болон XML
 HTTP Calls
JSON гэж юу вэ?
 JSON товчлол JavaScript Object Notation
 Энгийн бүтэцтэй, дата хадгалах болон
солилцох өгөгдлийн нэг хэлбэр
 Програмчлалын хэлнээс үл хамаарсан
 JavaScript-н дэд олонлогт суурилсан
 XML-c бага бичиглэлтэй
 Ойлгоход хялбар формат
JSON бүтэц
 JSON нь 2 үндсэн хэсэгтэй:
1. JSON Объект
 Түлхүүр – Утга агуулна.
2. JSON Array
 JSON объект агуулна
JSON бүтэц
 JSON объект нь угалзан хаалтанд байрлана {}
 {"овог":"Бат", "нэр":"Цэцэг"}
 Түлхүүр(key) болон утга(value) хооронд тодорхойлох
хоёр цэг бичнэ :
 "key":"value"
 Олон түлхүүрүүд нь таслалаар зааглагдана. ,
 JSON Array нь дөрвөлжин хаалтанд бичигдэнэ []
JSON жишээ
{"ажилтан":[
{"овог":"Бат", "нэр":"Цэцэг"},
{"овог":"Эрдэнэ", "нэр":"Энх"},
{"овог":"Болд", "нэр":"Амар"}
]}
ажилтан – JSON Array-н нэр
овог – key
Бат - value
JSON болон XML
 Төстэй тал:
 Адилхан шаталсан бүтэцтэй
 Тааг болон түлхүүрийг өөрөө тодорхойлдог
 Ихэнх програмчлалын хэл дээр уншигдана
 Ялгаатай тал:
 JSON-д тааг байхгүй
 XML-с богино бичиглэлтэй
 Унших болон бичихэд JSON хурдан
 JSON нь Array ашиглана.
 JSON нь XML-с илүү хурдан, хялбар
Андройд HTTP дуудалт
 HttpURLConnection класс нь веб хуудаснаас
өгөгдөл унших, дамжуулах үүрэгтэй.
 Унших, дамжуулах өгөгдөл нь ямар ч
төрөлтэй урттай байж болно
HttpURLConnection
URL url = new URL(“url.хаяг”);
HttpURLConnection con =
(HttpURLConnection) url.openConnection();
try {
con.connect();
InputStream in = new
BufferedInputStream(con.getInputStream());
bufferedReader = new BufferedReader(new
InputStreamReader(in));
}
Finally {con.disconnect();}
Андройд AsyncTask
 AsyncTask нь Андройд-с тодорхойлогдсон
хийсвэр класс
 Энэ нь background task гүйцэтгэх
зориулалттай
 Ажлыг гүйцэтгээд үр дүнг буцаадаг.
 AsyncTask классаас өөрийн классыг
удамшуулж ажиллана.
 execute() методоор ажиллуулж эхлэнэ.
 Execute() метод нь doInBackground(),
onPostExecute() гэсэн методуудыг дуудна.
Андройд AsyncTask
Жишээ
 public class BackWork extends AsyncTask<String, String,
String>{
@Override
protected String doInBackground(String... params) {
try {
url = new URL(params[0]);
urlConnection = (HttpURLConnection)
url.openConnection();
urlConnection.connect();
inputStream = urlConnection.getInputStream();
bufferedReader = new BufferedReader(new
InputStreamReader(inputStream));
StringBuffer buffer = new StringBuffer();
String line;
while ((line = bufferedReader.readLine()) !=
null) {
buffer.append(line);
}
return buffer.toString();
} catch (MalformedURLException e) { e.printStackTrace(); }
catch (IOException e) { e.printStackTrace(); }
finally {
try {
if (bufferedReader != null) { bufferedReader.close(); }
} catch (IOException e) { e.printStackTrace(); }
if (urlConnection != null) { urlConnection.disconnect(); }
}
return null;
}
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
txt1.setText(s.toString());
}
}
Жишээ
Button btnLoad;
TextView txt1;
HttpURLConnection urlConnection;
URL url;
InputStream inputStream;
BufferedReader bufferedReader;
btnLoad = (Button)findViewById(R.id.btnLoad);
txt1 = (TextView)findViewById(R.id.txt1);
btnLoad.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new
BackWork().execute("http://192.100.0.146/jsonExample.json")
;
}
});
JSON Parsing
 JSON өгөгдлийг задлан уншихийн тулд
JSONObject классын объектыг үүсгэнэ.
 Бичигдэх хэлбэр:
 String оролт;
 JSONObject reader = new
JSONObject(оролт);
JSON Parsing
 Хэрэв JSON файл нь олон төрлийн объект
агуулж буй бол дараах байдалтай уншина
JSONObject sys = reader.getJSONObject("sys");
country = sys.getString("country");
JSONObject main = reader.getJSONObject("main");
temperature = main.getString("temp");
getJSONObject метод нь JSON объект
буцаана.
getString метод нь өгөгдсөн түлхүүрт
харгалзах тэмдэгт мөр утга буцаана.
JSON объектийн методууд
 get(String name) – Объект төрөлтэй утга буцаана.
 getBoolean(String name) – Өгөгдсөн түлхүүрт
харгалзах boolean утга буцаана.
 getDouble(String name) – Өгөгдсөн түлхүүрт
харгалзах бүхэл тоон утга буцаана.
 getInt(String name), getLong(String name) – Өгөгдсөн
түлхүүрт харгалзах бүхэл тоон утга буцаана.
 length() – JSON объект дах утгуудын тоог буцаана.
 names() – json объект дах утгын нэрсийг array
төрөлтэй буцаана.
Жишээ
 String jsonstring;
jsonstring = buffer.toString();
JSONObject jsonObject = new
JSONObject(jsonstring);
JSONArray workerArray =
jsonObject.getJSONArray("worker");
JSONObject ajiltan =
workerArray.getJSONObject(0);
String ner = ajiltan.getString("name");
String ovog = ajiltan.getString("last");
return ovog + " овогтой " +ner;
Олон объект унших
 StringBuffer mur = new StringBuffer();
for(int i=0; i<workerArray.length();i++) {
JSONObject ajiltan =
workerArray.getJSONObject(i);
String ner = ajiltan.getString("name");
String ovog = ajiltan.getString("last");
mur.append(ovog + " овогтой " +ner+"n");
}
return mur.toString();
Java Model
 Model ашигласнаар нэг объектоор
дамжуулан ижил талбаруудруу хандах
боломжтой болно.
 public class StudentModel {
private String code;
private String ovog;
private String ner;
private int nas;
private String huis;
private String angi;
private int kurs;
private String zurag;
public String getCode(){
return code;
}
public void setCode(String code){
this.code = code;
}
 public class Ajil extends AsyncTask<String,
String, List<StudentModel>>
{
@Override
protected List<StudentModel>
doInBackground(String... params) {
try {
URL url = new URL(params[0]);
List<StudentModel> studentModelList = new
ArrayList<>();
for(int i=0; i<jsonArray.length(); i++) {
JSONObject worker = jsonArray.getJSONObject(i);
StudentModel st = new StudentModel();
st.setCode(worker.getString("code"));
st.setOvog(worker.getString("ovog"));
st.setNer(worker.getString("ner"));
st.setNas(worker.getInt("nas"));
st.setHuis(worker.getString("huis"));
st.setAngi(worker.getString("angi"));
st.setKurs(worker.getInt("kurs"));
st.setZurag(worker.getString("zurag"));
studentModelList.add(st);
}
return studentModelList;
 @Override
protected void
onPostExecute(List<StudentModel> s) {
super.onPostExecute(s);
//дэлгэцэнд харуулах код
}
Custom ListView үүсгэх Row.xml
Row.xml
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="5dp">
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content">
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:layout_width="117dp"
android:layout_height="105dp"
android:id="@+id/img1"
android:src="@drawable/pic" />
</FrameLayout>
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingLeft="10dp"
android:orientation="vertical"
>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="St Code"
android:id="@+id/txtCode" />
StudentAdapter нэртэй шинэ класс
үүсгэнэ.
 public class StudentAdapter extends ArrayAdapter{
private List<StudentModel> studentModelList;
private int resource;
private LayoutInflater inflater;
public StudentAdapter(Context context, int resource,
List<StudentModel> objects) {
super(context, resource, objects);
studentModelList = objects;
this.resource = resource;
inflater = (LayoutInflater)
getSystemService(LAYOUT_INFLATER_SERVICE);
}
үргэлжлэл
 @Override
public View getView(int position, View convertView, ViewGroup
parent) {
if(convertView==null)
{
convertView = inflater.inflate(R.layout.row, null );
}
final ImageView image;
final TextView txtCode;
final TextView txtOvog;
final TextView txtNer;
final TextView txtNas;
final TextView txtHuis;
final TextView txtAngi;
final TextView txtKurs;
final TextView txtZurag;
үргэлжлэл
 image = (ImageView)convertView.findViewById(R.id.img1);
txtCode = (TextView)convertView.findViewById(R.id.txtCode);
txtOvog = (TextView)convertView.findViewById(R.id.txtOvog);
txtNer = (TextView)convertView.findViewById(R.id.txtNer);
txtNas = (TextView)convertView.findViewById(R.id.txtNas);
txtHuis = (TextView)convertView.findViewById(R.id.txtHuis);
txtAngi = (TextView)convertView.findViewById(R.id.txtAngi);
txtKurs = (TextView)convertView.findViewById(R.id.txtKurs);
txtZurag = (TextView)convertView.findViewById(R.id.txtZurag);
үргэлжлэл
 try {
txtCode.setText("Код "+studentModelList.get(position).getCode());
txtOvog.setText("Овог "+studentModelList.get(position).getOvog());
txtNer.setText("Нэр "+studentModelList.get(position).getNer());
txtNas.setText("Нас: " + studentModelList.get(position).getNas());
txtHuis.setText("Хүйс "+studentModelList.get(position).getHuis());
txtAngi.setText("Анги "+studentModelList.get(position).getAngi());
txtKurs.setText("Курс "+studentModelList.get(position).getKurs());
txtZurag.setText("Зураг "+studentModelList.get(position).getZurag());
}
catch(NullPointerException e){e.printStackTrace();
Log.e("aldoo", e.toString());}
return convertView;
}
}
onPostExecute метод-н код
 @Override
protected void
onPostExecute(List<StudentModel> s) {
super.onPostExecute(s);
//дэлгэцэнд харуулах код
StudentAdapter adapter = new
StudentAdapter(getApplicationContext(),
R.layout.row, s);
lv.setAdapter(adapter);
}
Андройд меню ашиглах
 <?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/
res/android"
xmlns:app="http://schemas.android.com/apk/res-
auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/action_reload"
android:orderInCategory="100"
android:title="@string/reload"
app:showAsAction="never"/>
</menu>
Меню дарах үед ажиллах код
 @Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if(id==R.id.action_reload)
{
new Ajil().execute("http://192.168.1.6/student.json");
return true;
}
return super.onOptionsItemSelected(item);
}
Ашигласан материал
 http://www.vogella.com/tutorials/AndroidBack
groundProcessing/article.html#concurrency_as
ynchtask
 http://www.compiletimeerror.com/2013/01/wh
y-and-how-to-use-
asynctask.html#.VxUjRPl97Dc
 http://samir-
mangroliya.blogspot.com/p/android-asynctask-
example.html

More Related Content

Similar to Android json parsing

Similar to Android json parsing (8)

SW203 Lab9
SW203  Lab9SW203  Lab9
SW203 Lab9
 
Лабораторийн ажил 1
Лабораторийн ажил 1Лабораторийн ажил 1
Лабораторийн ажил 1
 
Lec04
Lec04Lec04
Lec04
 
Dynamic web 11
Dynamic web 11Dynamic web 11
Dynamic web 11
 
Day 3 php working with string, number
Day 3   php working with string, numberDay 3   php working with string, number
Day 3 php working with string, number
 
Lecture5 6
Lecture5 6Lecture5 6
Lecture5 6
 
123123
123123123123
123123
 
123123
123123123123
123123
 

More from Энхтамир Ш

Lecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээLecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
Энхтамир Ш
 

More from Энхтамир Ш (20)

Lecture 14 test strategy
Lecture 14   test strategyLecture 14   test strategy
Lecture 14 test strategy
 
ПХ-н баримтжуулалтын бодлого тогтоох
ПХ-н баримтжуулалтын бодлого тогтоохПХ-н баримтжуулалтын бодлого тогтоох
ПХ-н баримтжуулалтын бодлого тогтоох
 
Personal Software Process
Personal Software ProcessPersonal Software Process
Personal Software Process
 
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээLecture 4 - Програм хангамжийн төслийн үнэлгээ
Lecture 4 - Програм хангамжийн төслийн үнэлгээ
 
Multimedia
MultimediaMultimedia
Multimedia
 
Css animation
Css animationCss animation
Css animation
 
Lecture html head
Lecture   html headLecture   html head
Lecture html head
 
Монголын Их, дээд сургуулиудын техник технологийн өнөөгийн байдал, хөгжлийн ...
Монголын  Их, дээд сургуулиудын техник технологийн өнөөгийн байдал, хөгжлийн ...Монголын  Их, дээд сургуулиудын техник технологийн өнөөгийн байдал, хөгжлийн ...
Монголын Их, дээд сургуулиудын техник технологийн өнөөгийн байдал, хөгжлийн ...
 
Старт-ап, жижиг дунд байгууллага, үйлдвэрллийг дэмжих цахим систем
Старт-ап, жижиг дунд байгууллага, үйлдвэрллийг дэмжих цахим систем Старт-ап, жижиг дунд байгууллага, үйлдвэрллийг дэмжих цахим систем
Старт-ап, жижиг дунд байгууллага, үйлдвэрллийг дэмжих цахим систем
 
Оюутны хөдөлмөр эрхлэлт
Оюутны хөдөлмөр эрхлэлтОюутны хөдөлмөр эрхлэлт
Оюутны хөдөлмөр эрхлэлт
 
НББ-ийн сургалтын өнөөгийн байдлын судалгаа
НББ-ийн сургалтын өнөөгийн байдлын судалгааНББ-ийн сургалтын өнөөгийн байдлын судалгаа
НББ-ийн сургалтын өнөөгийн байдлын судалгаа
 
Хувьцааны өгөөж түүнд нөлөөлж буй хүчин зүйлсийн шинжилгээ
Хувьцааны өгөөж түүнд нөлөөлж буй хүчин зүйлсийн шинжилгээХувьцааны өгөөж түүнд нөлөөлж буй хүчин зүйлсийн шинжилгээ
Хувьцааны өгөөж түүнд нөлөөлж буй хүчин зүйлсийн шинжилгээ
 
ОЮУТНЫ СУРЛАГЫН АМЖИЛТАНД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛСИЙН СУДАЛГАА
ОЮУТНЫ СУРЛАГЫН АМЖИЛТАНД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛСИЙН СУДАЛГААОЮУТНЫ СУРЛАГЫН АМЖИЛТАНД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛСИЙН СУДАЛГАА
ОЮУТНЫ СУРЛАГЫН АМЖИЛТАНД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛСИЙН СУДАЛГАА
 
НИЙГМИЙН ХАЛАМЖИЙН САНГИЙН ЗАРЛАГАД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛИЙН ШИНЖИЛГЭЭ
НИЙГМИЙН ХАЛАМЖИЙН САНГИЙН ЗАРЛАГАД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛИЙН ШИНЖИЛГЭЭ НИЙГМИЙН ХАЛАМЖИЙН САНГИЙН ЗАРЛАГАД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛИЙН ШИНЖИЛГЭЭ
НИЙГМИЙН ХАЛАМЖИЙН САНГИЙН ЗАРЛАГАД НӨЛӨӨЛӨХ ХҮЧИН ЗҮЙЛИЙН ШИНЖИЛГЭЭ
 
Өнөөгийн нөхцөлд их дээд сургууль төгсөгчдийн эзлэх байр сууринд нөлөөлөх хүч...
Өнөөгийн нөхцөлд их дээд сургууль төгсөгчдийн эзлэх байр сууринд нөлөөлөх хүч...Өнөөгийн нөхцөлд их дээд сургууль төгсөгчдийн эзлэх байр сууринд нөлөөлөх хүч...
Өнөөгийн нөхцөлд их дээд сургууль төгсөгчдийн эзлэх байр сууринд нөлөөлөх хүч...
 
Англи хэл сурах дэлхий нийтийн чиг хандлага манай оронд нөлөөлж буйг судалс...
Англи хэл сурах дэлхий нийтийн чиг хандлага   манай оронд нөлөөлж буйг судалс...Англи хэл сурах дэлхий нийтийн чиг хандлага   манай оронд нөлөөлж буйг судалс...
Англи хэл сурах дэлхий нийтийн чиг хандлага манай оронд нөлөөлж буйг судалс...
 
Acc2 buyanzaya, nominzul, khaliunaa
Acc2   buyanzaya, nominzul, khaliunaaAcc2   buyanzaya, nominzul, khaliunaa
Acc2 buyanzaya, nominzul, khaliunaa
 
Turiin sanhuu l12
Turiin sanhuu l12Turiin sanhuu l12
Turiin sanhuu l12
 
Turiin sanhuu l11
Turiin sanhuu l11Turiin sanhuu l11
Turiin sanhuu l11
 
Turiin sanhuu l10
Turiin sanhuu l10Turiin sanhuu l10
Turiin sanhuu l10
 

Android json parsing

  • 1. Android JSON Parsing МБДС – МТТ Ш.Энхтамир/маг/
  • 2. Агуулга  JSON гэж юу вэ?  JSON – ний бүтэц  JSON Array болон JSON объект  JSON болон XML  HTTP Calls
  • 3. JSON гэж юу вэ?  JSON товчлол JavaScript Object Notation  Энгийн бүтэцтэй, дата хадгалах болон солилцох өгөгдлийн нэг хэлбэр  Програмчлалын хэлнээс үл хамаарсан  JavaScript-н дэд олонлогт суурилсан  XML-c бага бичиглэлтэй  Ойлгоход хялбар формат
  • 4. JSON бүтэц  JSON нь 2 үндсэн хэсэгтэй: 1. JSON Объект  Түлхүүр – Утга агуулна. 2. JSON Array  JSON объект агуулна
  • 5. JSON бүтэц  JSON объект нь угалзан хаалтанд байрлана {}  {"овог":"Бат", "нэр":"Цэцэг"}  Түлхүүр(key) болон утга(value) хооронд тодорхойлох хоёр цэг бичнэ :  "key":"value"  Олон түлхүүрүүд нь таслалаар зааглагдана. ,  JSON Array нь дөрвөлжин хаалтанд бичигдэнэ []
  • 6. JSON жишээ {"ажилтан":[ {"овог":"Бат", "нэр":"Цэцэг"}, {"овог":"Эрдэнэ", "нэр":"Энх"}, {"овог":"Болд", "нэр":"Амар"} ]} ажилтан – JSON Array-н нэр овог – key Бат - value
  • 7. JSON болон XML  Төстэй тал:  Адилхан шаталсан бүтэцтэй  Тааг болон түлхүүрийг өөрөө тодорхойлдог  Ихэнх програмчлалын хэл дээр уншигдана  Ялгаатай тал:  JSON-д тааг байхгүй  XML-с богино бичиглэлтэй  Унших болон бичихэд JSON хурдан  JSON нь Array ашиглана.  JSON нь XML-с илүү хурдан, хялбар
  • 8. Андройд HTTP дуудалт  HttpURLConnection класс нь веб хуудаснаас өгөгдөл унших, дамжуулах үүрэгтэй.  Унших, дамжуулах өгөгдөл нь ямар ч төрөлтэй урттай байж болно
  • 9. HttpURLConnection URL url = new URL(“url.хаяг”); HttpURLConnection con = (HttpURLConnection) url.openConnection(); try { con.connect(); InputStream in = new BufferedInputStream(con.getInputStream()); bufferedReader = new BufferedReader(new InputStreamReader(in)); } Finally {con.disconnect();}
  • 10. Андройд AsyncTask  AsyncTask нь Андройд-с тодорхойлогдсон хийсвэр класс  Энэ нь background task гүйцэтгэх зориулалттай  Ажлыг гүйцэтгээд үр дүнг буцаадаг.  AsyncTask классаас өөрийн классыг удамшуулж ажиллана.  execute() методоор ажиллуулж эхлэнэ.  Execute() метод нь doInBackground(), onPostExecute() гэсэн методуудыг дуудна.
  • 12. Жишээ  public class BackWork extends AsyncTask<String, String, String>{ @Override protected String doInBackground(String... params) { try { url = new URL(params[0]); urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.connect(); inputStream = urlConnection.getInputStream(); bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer buffer = new StringBuffer(); String line; while ((line = bufferedReader.readLine()) != null) { buffer.append(line); } return buffer.toString();
  • 13. } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (bufferedReader != null) { bufferedReader.close(); } } catch (IOException e) { e.printStackTrace(); } if (urlConnection != null) { urlConnection.disconnect(); } } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); txt1.setText(s.toString()); } }
  • 14. Жишээ Button btnLoad; TextView txt1; HttpURLConnection urlConnection; URL url; InputStream inputStream; BufferedReader bufferedReader; btnLoad = (Button)findViewById(R.id.btnLoad); txt1 = (TextView)findViewById(R.id.txt1); btnLoad.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new BackWork().execute("http://192.100.0.146/jsonExample.json") ; } });
  • 15. JSON Parsing  JSON өгөгдлийг задлан уншихийн тулд JSONObject классын объектыг үүсгэнэ.  Бичигдэх хэлбэр:  String оролт;  JSONObject reader = new JSONObject(оролт);
  • 16. JSON Parsing  Хэрэв JSON файл нь олон төрлийн объект агуулж буй бол дараах байдалтай уншина JSONObject sys = reader.getJSONObject("sys"); country = sys.getString("country"); JSONObject main = reader.getJSONObject("main"); temperature = main.getString("temp"); getJSONObject метод нь JSON объект буцаана. getString метод нь өгөгдсөн түлхүүрт харгалзах тэмдэгт мөр утга буцаана.
  • 17. JSON объектийн методууд  get(String name) – Объект төрөлтэй утга буцаана.  getBoolean(String name) – Өгөгдсөн түлхүүрт харгалзах boolean утга буцаана.  getDouble(String name) – Өгөгдсөн түлхүүрт харгалзах бүхэл тоон утга буцаана.  getInt(String name), getLong(String name) – Өгөгдсөн түлхүүрт харгалзах бүхэл тоон утга буцаана.  length() – JSON объект дах утгуудын тоог буцаана.  names() – json объект дах утгын нэрсийг array төрөлтэй буцаана.
  • 18. Жишээ  String jsonstring; jsonstring = buffer.toString(); JSONObject jsonObject = new JSONObject(jsonstring); JSONArray workerArray = jsonObject.getJSONArray("worker"); JSONObject ajiltan = workerArray.getJSONObject(0); String ner = ajiltan.getString("name"); String ovog = ajiltan.getString("last"); return ovog + " овогтой " +ner;
  • 19.
  • 20. Олон объект унших  StringBuffer mur = new StringBuffer(); for(int i=0; i<workerArray.length();i++) { JSONObject ajiltan = workerArray.getJSONObject(i); String ner = ajiltan.getString("name"); String ovog = ajiltan.getString("last"); mur.append(ovog + " овогтой " +ner+"n"); } return mur.toString();
  • 21. Java Model  Model ашигласнаар нэг объектоор дамжуулан ижил талбаруудруу хандах боломжтой болно.
  • 22.
  • 23.  public class StudentModel { private String code; private String ovog; private String ner; private int nas; private String huis; private String angi; private int kurs; private String zurag; public String getCode(){ return code; } public void setCode(String code){ this.code = code; }
  • 24.  public class Ajil extends AsyncTask<String, String, List<StudentModel>> { @Override protected List<StudentModel> doInBackground(String... params) { try { URL url = new URL(params[0]);
  • 25. List<StudentModel> studentModelList = new ArrayList<>(); for(int i=0; i<jsonArray.length(); i++) { JSONObject worker = jsonArray.getJSONObject(i); StudentModel st = new StudentModel(); st.setCode(worker.getString("code")); st.setOvog(worker.getString("ovog")); st.setNer(worker.getString("ner")); st.setNas(worker.getInt("nas")); st.setHuis(worker.getString("huis")); st.setAngi(worker.getString("angi")); st.setKurs(worker.getInt("kurs")); st.setZurag(worker.getString("zurag")); studentModelList.add(st); } return studentModelList;
  • 26.  @Override protected void onPostExecute(List<StudentModel> s) { super.onPostExecute(s); //дэлгэцэнд харуулах код }
  • 28. Row.xml  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="5dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:layout_width="117dp" android:layout_height="105dp" android:id="@+id/img1" android:src="@drawable/pic" /> </FrameLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="10dp" android:orientation="vertical" > <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceLarge" android:text="St Code" android:id="@+id/txtCode" />
  • 29. StudentAdapter нэртэй шинэ класс үүсгэнэ.  public class StudentAdapter extends ArrayAdapter{ private List<StudentModel> studentModelList; private int resource; private LayoutInflater inflater; public StudentAdapter(Context context, int resource, List<StudentModel> objects) { super(context, resource, objects); studentModelList = objects; this.resource = resource; inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); }
  • 30. үргэлжлэл  @Override public View getView(int position, View convertView, ViewGroup parent) { if(convertView==null) { convertView = inflater.inflate(R.layout.row, null ); } final ImageView image; final TextView txtCode; final TextView txtOvog; final TextView txtNer; final TextView txtNas; final TextView txtHuis; final TextView txtAngi; final TextView txtKurs; final TextView txtZurag;
  • 31. үргэлжлэл  image = (ImageView)convertView.findViewById(R.id.img1); txtCode = (TextView)convertView.findViewById(R.id.txtCode); txtOvog = (TextView)convertView.findViewById(R.id.txtOvog); txtNer = (TextView)convertView.findViewById(R.id.txtNer); txtNas = (TextView)convertView.findViewById(R.id.txtNas); txtHuis = (TextView)convertView.findViewById(R.id.txtHuis); txtAngi = (TextView)convertView.findViewById(R.id.txtAngi); txtKurs = (TextView)convertView.findViewById(R.id.txtKurs); txtZurag = (TextView)convertView.findViewById(R.id.txtZurag);
  • 32. үргэлжлэл  try { txtCode.setText("Код "+studentModelList.get(position).getCode()); txtOvog.setText("Овог "+studentModelList.get(position).getOvog()); txtNer.setText("Нэр "+studentModelList.get(position).getNer()); txtNas.setText("Нас: " + studentModelList.get(position).getNas()); txtHuis.setText("Хүйс "+studentModelList.get(position).getHuis()); txtAngi.setText("Анги "+studentModelList.get(position).getAngi()); txtKurs.setText("Курс "+studentModelList.get(position).getKurs()); txtZurag.setText("Зураг "+studentModelList.get(position).getZurag()); } catch(NullPointerException e){e.printStackTrace(); Log.e("aldoo", e.toString());} return convertView; } }
  • 33. onPostExecute метод-н код  @Override protected void onPostExecute(List<StudentModel> s) { super.onPostExecute(s); //дэлгэцэнд харуулах код StudentAdapter adapter = new StudentAdapter(getApplicationContext(), R.layout.row, s); lv.setAdapter(adapter); }
  • 34. Андройд меню ашиглах  <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/ res/android" xmlns:app="http://schemas.android.com/apk/res- auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity"> <item android:id="@+id/action_reload" android:orderInCategory="100" android:title="@string/reload" app:showAsAction="never"/> </menu>
  • 35. Меню дарах үед ажиллах код  @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if(id==R.id.action_reload) { new Ajil().execute("http://192.168.1.6/student.json"); return true; } return super.onOptionsItemSelected(item); }
  • 36.
  • 37. Ашигласан материал  http://www.vogella.com/tutorials/AndroidBack groundProcessing/article.html#concurrency_as ynchtask  http://www.compiletimeerror.com/2013/01/wh y-and-how-to-use- asynctask.html#.VxUjRPl97Dc  http://samir- mangroliya.blogspot.com/p/android-asynctask- example.html

Editor's Notes

  1. Parsing – Өгүүлбэр зүйн задлан ялгал
  2. Notation – тэмдэглэгээ, индекс
  3. AsyncTask have Four Main Method... onPreExecute()  doInBackground() onProgressUpdate() onPostExecute()  onPreExecute-This method is called first when you start AsyncTask using objAsync.execute().And mostly this method is use for initializing dialog(ProgressDialog,CustomDialog) and showing. doInBackground-The main purpose of AsyncTask is accomplished by this method.Any non-UI thread process is running in this method.Such as Rss Feed Reader,Image and video Uploading and Downloading.You cant handle your View in this method.Because this method is non-UI thread.While any background process is running if you want to handle UI therea are  onProgressUpdate method. after completion of process this method send result to OnPostExecute. onProgressUpdate-While backgrounding task is running ,you can handle your UI using this method .Such as status of downloading or uploading task.and this method is called from  doInBackground.Using publishProgress() you can call onProgressUpdate method to update UI while process is running. onPostExecute -This method is called after the background computation finishes.The result of background process in passed in this method as parameters.And now you can dismiss progress dialog ,to indicate that background task is completed.