در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 44
موضوعها: 16
تاریخ عضویت: فروردین ۱۳۹۴
اعتبار:
8
سپاس ها 29
سپاس شده 47 بار در 24 ارسال
حالت من:
۱۳۹۴/۰۳/۱۴, ۱۰:۰۷ ق.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۴, ۱۰:۴۷ ق.ظ توسط admin.)
به نام خدا
سلام،من دو نوع داده json دارم میخاستم بدونم کدام یک درست وکدام یک نادرست است.
نوع اول:
کد پیاچپی: [ { "ms": "123456", "time": "2015-06-04T07:32:07+02:00" } , { "ms": "rayej.ir", "time": "2015-06-04T07:32:01+02:00" } , { "ms": "test", "time": "2015-06-04T07:31:43+02:00" } , { "ms": "سلام", "time": "2015-06-04T07:31:37+02:00" } , { "ms":"rayej.ir", "time":"" } ]
نوع دوم:
کد پیاچپی: [ { "ms": "123456", "time": "2015-06-04T07:32:07+02:00" } , { "ms": "rayej.ir", "time": "2015-06-04T07:32:01+02:00" } , { "ms": "test", "time": "2015-06-04T07:31:43+02:00" } , { "ms": "سلام", "time": "2015-06-04T07:31:37+02:00" } ,]
راستی من هرکدام از این داده هارا به برنامه میدم باز نمیشه،ممنون میشم اگر جواب بدید.
سپاس شده توسط | |
|
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 98
موضوعها: 17
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
22
سپاس ها 48
سپاس شده 150 بار در 71 ارسال
حالت من:
۱۳۹۴/۰۳/۱۴, ۱۰:۲۴ ق.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۴, ۱۰:۳۳ ق.ظ توسط am5152.)
parser شما رو میتونیم ببینیم ؟
دقیقا از Data بالا چیرو میخواید parse کنید؟
توضیحات زیر رو بخونید :
http://www.androidhive.info/2012/01/andr...-tutorial/
[ برای JSONArray استفاده میشه و { برای JSONObject
برای مورد اول هم که باید getJSONArray() استفاده کرد.مورد دوم از متد : getJSONObject()
با این حساب ، احتمالا هر دو نادرست هستند.چون برای شروع باید از } استفاده کنید.
با استفاده از سایت زیر راحت تر میتونید بسازیدش:
http://www.jsonschema2pojo.org/
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 346
موضوعها: 7
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
142
سپاس ها 183
سپاس شده 647 بار در 292 ارسال
حالت من: هیچ کدام
۱۳۹۴/۰۳/۱۴, ۰۳:۵۶ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۴, ۰۴:۰۶ ب.ظ توسط داش بهروز.)
روش دوم شما اشتباه است دوست عزیز چون بعد از شی آخر در آرایه احتیاجی به علامت , نیست.
و ساختار روش اول شما به درستی نوشته شده است.(یک جیسون آرایه هست با 5 شی در داخل آن).
اینکه چیزی نمایش نمیدهد باید ساختار parse رو همون طور که دوستمون گفت ببینیم تا علت معلوم شه..
شما اگه واسه ساختن جیسون هنوز تسلط کامل ندارید میتونید از jsonEditor ها استفاده کنید .علاوه بر آدرس بالا سایت زیر
https://www.jsoneditoronline.org/
یک سایت خیلی خوبی هست که میتونید جیسون هاتون داخلش بسازید.. کافیه همین جیسوناتون کپی کنید داخل ادیتور این سایت و دکمه ساخت رو بزنید ،میبیند از روش دوم شما ایراد گرفته میشود.
در جواب دوست بالا یک نکته ای وجود داره..لزوما برای شروع جیسون احتیاجی نیست که جیسون با علامت{ شروع بشه .چون میتونه جیسون از یک JsonArray تشکلیل شده باشه .و همون طور که گفتید برای jsonArray از علامت [ استفاده میشه..پس اینکه هر دو جیسون با علامت [ شروع شده ایرادی نداره و مشکلی نیست. و روش اول این دوستمون به درستی نوشته شده است.
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 44
موضوعها: 16
تاریخ عضویت: فروردین ۱۳۹۴
اعتبار:
8
سپاس ها 29
سپاس شده 47 بار در 24 ارسال
حالت من:
۱۳۹۴/۰۳/۱۷, ۱۱:۳۱ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۷, ۱۱:۳۳ ب.ظ توسط rayej.ir.)
به نام خدا
با تشکر از جواب های قبلی تون
ولی من یک سوال دیگه هم داشتم که چه جوره میتونم با این روش عکس هم دریافت کرد
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 202
موضوعها: 70
تاریخ عضویت: شهریور ۱۳۹۳
اعتبار:
4
سپاس ها 89
سپاس شده 143 بار در 81 ارسال
حالت من:
۱۳۹۴/۰۳/۱۸, ۱۲:۰۰ ق.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۸, ۱۲:۰۱ ق.ظ توسط kousha.nikkar.)
میتونید در یکی از فیلد ها لینک عکس آپلود شده رو بگذارید و در لیست ویو، یک imageView داشته باشید. سپس بر اساس کلید 2777 محتوای عکس رو از اون شی دانلود کنید و نمایش بدید!
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 98
موضوعها: 17
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
22
سپاس ها 48
سپاس شده 150 بار در 71 ارسال
حالت من:
۱۳۹۴/۰۳/۱۸, ۱۲:۰۵ ق.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۸, ۱۱:۰۳ ق.ظ توسط admin.)
(۱۳۹۴/۰۳/۱۴, ۰۳:۵۶ ب.ظ)داش بهروز نوشته: روش دوم شما اشتباه است دوست عزیز چون بعد از شی آخر در آرایه احتیاجی به علامت , نیست.
و ساختار روش اول شما به درستی نوشته شده است.(یک جیسون آرایه هست با 5 شی در داخل آن).
اینکه چیزی نمایش نمیدهد باید ساختار parse رو همون طور که دوستمون گفت ببینیم تا علت معلوم شه..
شما اگه واسه ساختن جیسون هنوز تسلط کامل ندارید میتونید از jsonEditor ها استفاده کنید .علاوه بر آدرس بالا سایت زیر
https://www.jsoneditoronline.org/
یک سایت خیلی خوبی هست که میتونید جیسون هاتون داخلش بسازید.. کافیه همین جیسوناتون کپی کنید داخل ادیتور این سایت و دکمه ساخت رو بزنید ،میبیند از روش دوم شما ایراد گرفته میشود.
در جواب دوست بالا یک نکته ای وجود داره..لزوما برای شروع جیسون احتیاجی نیست که جیسون با علامت{ شروع بشه .چون میتونه جیسون از یک JsonArray تشکلیل شده باشه .و همون طور که گفتید برای jsonArray از علامت [ استفاده میشه..پس اینکه هر دو جیسون با علامت [ شروع شده ایرادی نداره و مشکلی نیست. و روش اول این دوستمون به درستی نوشته شده است.
کد ایشون رو متاسفانه وقت نکردم ببینم ، برای همین از روی شواهد نظر ندادم اما دقت نکرده بودم ، نکته جالبی بود
(۱۳۹۴/۰۳/۱۷, ۱۱:۳۱ ب.ظ)rayej.ir نوشته: به نام خدا
با تشکر از جواب های قبلی تون
ولی من یک سوال دیگه هم داشتم که چه جوره میتونم با این روش عکس هم دریافت کرد
سوال خوبیه ، قبلا شدیدا دنبال این بودم.
یه مقدار دیگه در json data تعریف و بعد با استفاده از Adaptor و Data Seter بروی Layout خودتون Set میکنید.مثال زیر هم کمکتون میکنه:
کد پیاچپی: "url": "http://url.com/image.jpg"
مثال:
http://javatechig.com/android/json-feed-...in-android
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 346
موضوعها: 7
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
142
سپاس ها 183
سپاس شده 647 بار در 292 ارسال
حالت من: هیچ کدام
چیزی که لازم بود بگم و شاید به درد دوستان خورد.اولا در جواب سوال شما.همون طور که دوستان گفتن شما باید لینک عکسی که قبلا آپلود کردید رو فقط در جیسون قرار بدید و بعد از گرفتن این مقدار در کلیدی که دستمون قرار داد شروع به دانلود عکس کنید..
اما چیزی که هم هست اینه که سعی کنید از فایل جیسون شما حجم بیشتر از 700 تا 800 کیلو بایت ارسال نشه..که در این صورت بیشتر مواقع هنگام گرفتن مقادیر از جیسون برنامه هنگ میکنه و عمل گرفتن مقادیر از جیسون صورت نمیگیره و یا به کندی انجام میشه. که راه حلی که در اینجور مواقع میشه داد، استفاده از دیتابیس و فایل رابط ،یا استفاده از Gson که برای گرفتن مقادیر بیشتر از این مقدار کارایی خیلی خوبی داره...دونستن این نکته بهتون کمک میکنه.
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 98
موضوعها: 17
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
22
سپاس ها 48
سپاس شده 150 بار در 71 ارسال
حالت من:
(۱۳۹۴/۰۳/۱۸, ۰۱:۰۳ ق.ظ)'داش بهروز' نوشته: چیزی که لازم بود بگم و شاید به درد دوستان خورد.اولا در جواب سوال شما.همون طور که دوستان گفتن شما باید لینک عکسی که قبلا آپلود کردید رو فقط در جیسون قرار بدید و بعد از گرفتن این مقدار در کلیدی که دستمون قرار داد شروع به دانلود عکس کنید..
اما چیزی که هم هست اینه که سعی کنید از فایل جیسون شما حجم بیشتر از 700 تا 800 کیلو بایت ارسال نشه..که در این صورت بیشتر مواقع هنگام گرفتن مقادیر از جیسون برنامه هنگ میکنه و عمل گرفتن مقادیر از جیسون صورت نمیگیره و یا به کندی انجام میشه. که راه حلی که در اینجور مواقع میشه داد، استفاده از دیتابیس و فایل رابط ،یا استفاده از Gson که برای گرفتن مقادیر بیشتر از این مقدار کارایی خیلی خوبی داره...دونستن این نکته بهتون کمک میکنه.
اضافه کنم که این مورد بیشتر با لایبری Volley
بدلیل ویژگی هایی که دارد:
1. Request queuing and prioritization [align=justify]2. Effective request cache and memory management [align=justify]3. Extensibility and customization of the library to our needs [align=justify]4. Cancelling the requests
به همراه Gson مورد استفاده قرار میگیرد.
اطلاعات بیشتر:
http://www.androidhive.info/2014/05/andr...library-1/
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 44
موضوعها: 16
تاریخ عضویت: فروردین ۱۳۹۴
اعتبار:
8
سپاس ها 29
سپاس شده 47 بار در 24 ارسال
حالت من:
سلام
ممنون از جواب های قبلی تون
یه سوال دیگه داشتم من با کد های زیر دادها رو دریافت میکنم
کد پیاچپی: package net.learn2develop.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.AsyncTask; import android.os.Bundle; import android.util.Log; import android.widget.Toast;
public class JSONActivity extends Activity {
public String readJSONFeed(String URL) { StringBuilder stringBuilder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(URL); 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) { stringBuilder.append(line); } } else { Log.e("JSON", "Failed to download file"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return stringBuilder.toString(); } private class ReadJSONFeedTask extends AsyncTask<String, Void, String> { protected String doInBackground(String... urls) { return readJSONFeed(urls[0]); } protected void onPostExecute(String result) { try { JSONArray jsonArray = new JSONArray(result); Log.i("JSON", "Number of surveys in feed: " + jsonArray.length());
//---print out the content of the json feed--- for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Toast.makeText(getBaseContext(), jsonObject.getString("ms") + " - " + jsonObject.getString("time"), Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace(); } } }
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* new ReadJSONFeedTask().execute("http://extjs.org.cn/extjs/examples/grid/survey.html"); */ new ReadJSONFeedTask().execute("http://json.rayej.ir"); } }
ولی با پروژه کلیدستان نه اگه میشه بگین چکار کنم؟ تشکر.
سپاس شده توسط | |
|
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 98
موضوعها: 17
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
22
سپاس ها 48
سپاس شده 150 بار در 71 ارسال
حالت من:
۱۳۹۴/۰۳/۱۹, ۰۶:۱۰ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۱۹, ۰۶:۲۱ ب.ظ توسط am5152.)
(۱۳۹۴/۰۳/۱۹, ۰۴:۵۴ ب.ظ)'rayej.ir' نوشته: سلام
ممنون از جواب های قبلی تون
یه سوال دیگه داشتم من با کد های زیر دادها رو دریافت میکنم
کد پیاچپی: package net.learn2develop.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.AsyncTask; import android.os.Bundle; import android.util.Log; import android.widget.Toast;
public class JSONActivity extends Activity {
public String readJSONFeed(String URL) { StringBuilder stringBuilder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(URL); 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) { stringBuilder.append(line); } } else { Log.e("JSON", "Failed to download file"); } } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return stringBuilder.toString(); } private class ReadJSONFeedTask extends AsyncTask<String, Void, String> { protected String doInBackground(String... urls) { return readJSONFeed(urls[0]); } protected void onPostExecute(String result) { try { JSONArray jsonArray = new JSONArray(result); Log.i("JSON", "Number of surveys in feed: " + jsonArray.length());
//---print out the content of the json feed--- for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i); Toast.makeText(getBaseContext(), jsonObject.getString("ms") + " - " + jsonObject.getString("time"), Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace(); } } }
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* new ReadJSONFeedTask().execute("http://extjs.org.cn/extjs/examples/grid/survey.html"); */ new ReadJSONFeedTask().execute("http://json.rayej.ir"); } }
ولی با پروژه کلیدستان نه اگه میشه بگین چکار کنم؟ تشکر.
این کد ( رفرنس) میاد و برای مثال لینک زیر رو اگر ببینید:
http://extjs.org.cn/extjs/examples/grid/survey.html
میاد Array هارو میشماره ، با استفاده از این حلقه: کد پیاچپی: for (int i = 0; i < jsonArray.length(); i++)
بعد اونهارو در کد پیاچپی: Log.i("JSON", "Number of surveys in feed: " + jsonArray.length());
که میتونید با جستجو در لاگ ها خروجی رو پیدا کنید.
برا اینکه کدتون با JsonData شما جواب بده ، که در حال حاظر مشکلی نداره ، بعد از شمردن آرایه ها براتون در لاگ مشخص میکنه که با جستجوی : کد پیاچپی: Number of surveys in feed
میتونید پیداش کنید.من این مورد رو با Toast براتون نمایش دادم: کد پیاچپی: public class MainActivity extends Activity {
/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
/* execute the function */ new ReadJSONFeedTask().execute("http://json.rayej.ir"); }
public String readJSONFeed(String URL) { StringBuilder stringBuilder = new StringBuilder(); HttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(URL); 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) { stringBuilder.append(line); } } else { Log.e("JSON", "Failed to download file"); } } catch (IOException e) { e.printStackTrace(); } return stringBuilder.toString(); }
private class ReadJSONFeedTask extends AsyncTask<String, Void, String> { protected String doInBackground(String... urls) { return readJSONFeed(urls[0]); }
protected void onPostExecute(String result) { try { JSONArray jsonArray = new JSONArray(result); Toast.makeText(MainActivity.this, "Number of Arrays is: " + jsonArray.length(), Toast.LENGTH_SHORT).show();
//---print out the content of the json feed--- for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject = jsonArray.getJSONObject(i);
Toast.makeText(getBaseContext(), jsonObject.getString("ms") + " - " + jsonObject.getString("time"), Toast.LENGTH_SHORT).show();
} } catch (Exception e) { e.printStackTrace(); } } }
}
پس کد شما مشکلی نداشت.
ضمنا گویا متد هایی مثل HttpResponse و StatusLine و غیره منسوخ شده اند.بهتره به فکر جایگزین باشید.
بقیه موارد که در آرایه دارید نیز خیلی ساده با Toast نمایش داده میشند.
فقط میمونه که میخواید با اینها چیکار کنید؟ کجا نمایشش بدید و ...
موفق باشید
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 44
موضوعها: 16
تاریخ عضویت: فروردین ۱۳۹۴
اعتبار:
8
سپاس ها 29
سپاس شده 47 بار در 24 ارسال
حالت من:
۱۳۹۴/۰۳/۲۴, ۱۱:۳۷ ق.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۲۴, ۰۶:۵۶ ب.ظ توسط admin.)
به نام خدا
سلام ،ببخشید میشه بگید که کد json زیر درست است یانه واگر هم اشتباه است درستش چگونه است ؟
کد پیاچپی: [ { "url": "" ,"name": "" , "pages url": "http://127.0.0.1/a/@amirrayej" ,"pages name": "asdfjh fghd" }, { "url": "http://127.0.0.1/a/@baba" ,"name": "بعثت" ,"pages url": "" ,"pages name": "" }, { "url": "http://127.0.0.1/a/@dada_" ,"name": "خانواده" ,"pages url": "" ,"pages name": "" }, { "url": "http://127.0.0.1/a/@alireza_" ,"name": "ssss" ,"pages url": "" ,"pages name": "" }, { "url": "http://127.0.0.1/a/@alireza_amirrayej" ,"name": "ssssaass" ,"pages url": "" ,"pages name": "" }, { "ms":"rayej.ir", "time":"" } ]
سپاس شده توسط | |
|
در یافت اطلاعات از سرور با روش json (در اندروید)
ارسالها: 98
موضوعها: 17
تاریخ عضویت: اسفند ۱۳۹۳
اعتبار:
22
سپاس ها 48
سپاس شده 150 بار در 71 ارسال
حالت من:
۱۳۹۴/۰۳/۲۴, ۰۱:۵۹ ب.ظ
(آخرین تغییر در ارسال: ۱۳۹۴/۰۳/۲۴, ۰۶:۵۶ ب.ظ توسط admin.)
(۱۳۹۴/۰۳/۲۴, ۱۱:۳۷ ق.ظ)'rayej.ir' نوشته: به نام خدا
سلام ،ببخشید میشه بگید که کد json زیر درست است یانه واگر هم اشتباه است درستش چگونه است ؟کد پیاچپی: [ { "url": "" ,"name": "" , "pages url": "http://127.0.0.1/a/@amirrayej" ,"pages name": "asdfjh fghd" }, { "url": "http://127.0.0.1/a/@baba" ,"name": "بعثت" ,"pages url": "" ,"pages name": "" }, { "url": "http://127.0.0.1/a/@dada_" ,"name": "خانواده" ,"pages url": "" ,"pages name": "" }, { "url": "http://127.0.0.1/a/@alireza_" ,"name": "ssss" ,"pages url": "" ,"pages name": "" }, { "url": "http://127.0.0.1/a/@alireza_amirrayej" ,"name": "ssssaass" ,"pages url": "" ,"pages name": "" }, { "ms":"rayej.ir", "time":"" } ]
مشکلی نداره.یک آرایه 6 عنصری هست با مقادیری که واردشون کردید.
پست های قبل رو بخونید میتونید مشکلاتتون رو خودتون حل کنید.
|