رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

قرار دادن json array در json array


پست های پیشنهاد شده

سلام خسته نباشید 

دارم یه وب سرویس میگیرم برای خودم ، خب من یه سری اطلاعات شبیه به هم دارم ؛ در حال حاضر این اطلاعات رو جدا کردم و هرکدوم رو با یه ریکوئست میگیرم از سرور که خب این روش کار میکنه اما اصلا راه بهینه و بی نقصی نیست چون منطقی نیست برای گرفتن اطلاعات شبیه به هم از چندتا ریکوئست استفاده کرد

نمونه اش هم اینه 

0e9e_json_sample.jpg

در حال حاضر من برای گرفتن هرکدوم از دسته های اطلاعاتم یه ریکوئست میزنم که اشتباهه ، حالا میخوام یه کاری کنم 

اونم اینکه این اطلاهات رو دسته بندی کنم و اون دسته بندی رو بگیرم ، چجوری؟ من میخوام داخل json array م یا حالا json object م فرقی نمیکنه ، همین مقدار هارو اما با دسته بندی بزارم 

یعنی یه چیزی شبیه به این : http://api.football-data.org/v1/competitions/445/leagueTable

مثلا این جسون آرایی که الان دارم اطلاعات گروه A جام جهانی 2018 هستش ، میخوام این کلا توی یک دسته بندی json array قرار بگیره به نام groupA

و به همین ترتیب دوباره گروه های بعدی 

کلا اموزشی در این رابطه هست؟ که بشه اطلاعات دریافتی رو دسته بندی کرد ، که بعدش برای گرفتنشون کلا فقط یه ریکوئست بزنم و لازم نباشه برای هرکدوم یک درخواست بدم و الکی سرور رو مشغول و سرعتشو پایین بیارم!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

شما یبار به url مورد نظر Request رو بفرست و response رو نگه دار داخل یه متغیر String

بعد یه JsonArray بساز از اون متغیره. یه چیزی شبیه کد زیر:

JSONArray jsonarray = new JSONArray(responseString);

بعدش یه آرایه ی public بساز 

 
public String[] TestResult2;

بعد طولش رو برابر اون آرایه ی قبلی بزار

 

 
TestResult2 = new String[jsonarray.length()];

 

حالا با توجه به تعداد تو درتویی های خروجی json با استفاده از یه loop بشکاف و برو جلو تا به آخرین response ها برسی و هی object بساز تا برسی به تهش بعد میتونی مقادیر رو بخونی

for (int i = 0; i < jsonarray.length(); i++) {

                        JSONObject allObj;
                        allObj = jsonarray.getJSONObject(i);

                        TestResult2[i] = allObj.getString("playedGames");
                       
}

البته این کدی که نوشتم مال تهشه ولی ممکنه تو از چندتا حلقه استفاده کنی

ویرایش شده توسط mehrdadmmb2
لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 5 ساعت قبل، mehrdadmmb2 گفته است :

سلام

شما یبار به url مورد نظر Request رو بفرست و response رو نگه دار داخل یه متغیر String

بعد یه JsonArray بساز از اون متغیره. یه چیزی شبیه کد زیر:


JSONArray jsonarray = new JSONArray(responseString);

بعدش یه آرایه ی public بساز 



 

public String[] TestResult2;

بعد طولش رو برابر اون آرایه ی قبلی بزار

 



 

TestResult2 = new String[jsonarray.length()];

 

حالا با توجه به تعداد تو درتویی های خروجی json با استفاده از یه loop بشکاف و برو جلو تا به آخرین response ها برسی و هی object بساز تا برسی به تهش بعد میتونی مقادیر رو بخونی


for (int i = 0; i < jsonarray.length(); i++) {

                        JSONObject allObj;
                        allObj = jsonarray.getJSONObject(i);

                        TestResult2[i] = allObj.getString("playedGames");
                       
}

البته این کدی که نوشتم مال تهشه ولی ممکنه تو از چندتا حلقه استفاده کنی

سپاسگذارم ، عالیه 

 

فقط یه نکته ، الان با این کار ما یه آرایه داریم رشته ای داریم از تموم محتویاتمون ، خب حالا من این آرایه testResult2 رو چجوری به json object بشکونم؟ یا چجوری محتویاتو ازش بکشم بیرون؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

یه نکته دیگه که هست برای این کیس من ، یه جور دیگه هم میشه حل کرد این مسئله رو ، فرض کنید من مثلا اطلاعاتمو به 3 دسته تقسیم کردم و میخوام مثلا اطلاعاتم توی 3 تا دسته ی 4 تایی قرار بگیرن 

خب قبلا به interface م فقط یه لیستی از آیتم هام میدادم(کلشون مثلا 12 تا باشه ) اما حالا به interface م 3 تا لیست از آیتم هام میدم 

بعد با for های متفاوت از response م 3 تا لیستم رو پر میکنم و میدم به interface م ! و مثلا میخوام هرکدوم از این لیستا رو توی یک فرگمنت بزارم مثلا 3 تا لیستمو توی 3 تا فرگمنت بزارم 

خب با این روش من در واقع برای هر 3 تا فرگمنتم همه لیستا (یعنی 3 تا لیستم ) رو میفرستم ولی توی هرکدوم فقط یک لیست رو میگیرم ! و 2 تای دیگه توی هر فرگمنت بلا استفاده میمونن! 

مثلا اقا لیست اول توی فرگمنت اول ، لیست دوم توی فرگمنت دوم و لیست سوم توی فرگمنت سوم ! 

فقط ایراد این کار اینه که الکی الکی همه لیستا برای هرکدوم از فرگمنتا ارسال میشن درحالی که من فقط نیاز به یکی از اونا دارم ن هر سه تاشون!

 

روش شما آیا بهینه تر هستش ؟ 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

درواقع شما باید ببینید به چه چیزی نیاز دارید بعضی وقتا این کار جواب میده و بعضی وقتا نه

در خصوص اون سوال اولتون هم شما تا جایی که برسید به تهش باید از String هاتون JSONObject بسازید و هدر مورد نظر رو بیرون بکشید که بعد از این کار تمام محتویات داخل همون هدرس، بعد دوباره تبدیل به String میکنید و دوباره هدر بعدی رو بیرون میکشید و همینطور تا آخر

لینک ارسال
به اشتراک گذاری در سایت های دیگر
در 15 ساعت قبل، mehrdadmmb2 گفته است :

درواقع شما باید ببینید به چه چیزی نیاز دارید بعضی وقتا این کار جواب میده و بعضی وقتا نه

در خصوص اون سوال اولتون هم شما تا جایی که برسید به تهش باید از String هاتون JSONObject بسازید و هدر مورد نظر رو بیرون بکشید که بعد از این کار تمام محتویات داخل همون هدرس، بعد دوباره تبدیل به String میکنید و دوباره هدر بعدی رو بیرون میکشید و همینطور تا آخر

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

نه منظورم کلی هست چجوری از یک آرایه استرینگی json object بگیرم؟ متغییر indexOf ش اینکارو میکنه؟ یا چیز دیگه هست؟ چون خود ارایه استرینگی رو نمیشه مستقیم از getJsonObject کرد 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...