hamidreza.kh

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

6 ارسال در این موضوع قرار دارد

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

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

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

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
2 کاربر پسند شده است

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 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 میکنید و دوباره هدر بعدی رو بیرون میکشید و همینطور تا آخر

1 کاربر پسند دیده است

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


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

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

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

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

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

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری