رفتن به مطلب
  • 0

دریافت json با آبجکت های ناهمنام


iraj_astara

سوال

با سلام و احترام

یک فایل json به صورت زیر موجود هست ، میخوام این داده هارو در recyclerview قرار بدم ،الان آرایه data1  و محتویات اون رو دریافت میکنم ، ولی نمیتونم abc, xyz و محتویاتش رو داخل recyclerview قرار بدم. با کنابخونه volley اینکار رو انجام میدم و یک object request و یک آبجکت هم برای data1 ایجاد میکنم.

ممنون میشم راهنمایی کنین که به چه صورت xyz و abc و ... رو هم به ترتیب دریافت کنم و توی recyclerview  قرار داده بشه.

 

{
"Data1":{
       "index1":"4",
       "name":"dan"
     },
"xyz":{
       "index1":"2",
       "name":"jimi"
     }
"abc":{
       "index1":"5",
       "name":"jordan"
     }
}

 

الان به این طریق داده هارو توی حلقه دریافت میکنم ولی فقط یکی از آبجکت هارو میگیره و abc و ... رو نمیشه داخل حلقه گذاشت.

JSONObject jsonObject = response.getJSONObject("Data1");
getset1.seti(jsonObject.getString("index1"));
getset1.setn(jsonObject.getString("name"));

 

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

4 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

مپ ها داری یک ساب Keys هستن که میشه از طریق اون کارتون راه بندازید.

مثلا:

For Each name As String In map.Keys
	
Next

«موفق باشید.»

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

در 26 دقیقه قبل، امین مهدی نژاد گفته است :

مپ ها داری یک ساب Keys هستن که میشه از طریق اون کارتون راه بندازید.

مثلا:


For Each name As String In map.Keys
	
Next

«موفق باشید.»

ممنون ولی مشکل من با android studio هست ، کدی که دادین برای B4A هست ، اگه نمونه ای از کد با مثال در android studio دارید ممنون میشم قرار بدین

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

سلام

 

این کد رو تست کنید

try {
            JSONObject date = new JSONObject(jssson);
            
            JSONObject data1 = date.getJSONObject("Data1");
            Log.d("LogCat",data1.getString("index1"));
            Log.d("LogCat",data1.getString("name"));

            JSONObject xyz = date.getJSONObject("xyz");
            Log.d("LogCat",xyz.getString("index1"));
            Log.d("LogCat",xyz.getString("name"));

            JSONObject abcd = date.getJSONObject("Data1");
            Log.d("LogCat",abcd.getString("index1"));
            Log.d("LogCat",abcd.getString("name"));

        } catch (JSONException e) {
            e.printStackTrace();
        }

 

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

سلام،

دوستان روش های جالبی ارائه کردن، منتهی بنده هم این رو پیشنهاد میکنم که کار با کتابخانه Gson رو که خود گوگل ارائه میکنه یاد بگیرید، برای Serialize (تبدیل شیء به متن Json) و Deserialize (تبدیل متن Json به شیء) فوق العاده کار ما رو آسان میکنه و گفتنش خالی از لطف نیست!

  1. فایلی که پیوست کردم رو دانلود کنید و از حالت فشرده خارجش کنید.
  2. از منوی File به زیرمنوی New برید و New Module رو انتخاب کنید.
  3. از پنجره باز شده گزینه Import JAR/.AAR Package رو انتخاب کنید و Next بزنید.
  4. فایلی که از حالت فشرده خارج کردید رو انتخاب کنید و Next بزنید تا به پروژه تون اضافه بشه.
  5. حالا به از منوی File گزینه Project Structure رو انتخاب کنید. 
  6. در سمت چپ پنجره باز شده، در بخشِ Modules گزینه app رو انتخاب کنید.
  7. به زبانه آخر یعنی Dependencies برید و روی علامت بعلاوه سبز رنگی که در سمت راستش وجود داره کلیک کنید و Module dependency رو انتخاب کنید.
  8. دوباره از پنجره باز شده، gson رو انتخاب کرده و تمام پنجره ها رو اوکی کنید و اجازه بدید که Gradle کاملا همگام سازی بشه.

داخل پرانتز: همه اینها رو گفتم و راه پیچیده ای بود، اگه به V-P-N دسترسی دارید میتونید با اضافه کردن خط زیر به فایل build.gradle متعلق به app در اندروید استودیو اجازه بدید خودش کتابخانه رو دانلود و به پروژه اضافه کنه.

    compile 'com.google.code.gson:gson:2.8.2'

 

خب، کتابخانه به پروژه اضافه شد. باید بپردازیم به بحث اصلی که همون Deserialize کردن متن JSON هستش.

برای اون JSON که آوردید، باید به این شکل کلاس تعریف کنید که هنگام کار با کتابخانه Gson مشکلی نباشه.

    public class GeneralModel {
        JsonItem Data1;
        JsonItem xyz;
        JsonItem abc;
      // و اگر ادامه داره اشیاتون، همش رو همینجا تعریف کنید
      // به دلیل استاندارد نبودن جیسون 
    }

    public class JsonItem {
        String index1;
        String name;
    }

 

به این شکل هم JSON خودتون رو به نمونه ای از این کلاس ها تبدیل کنید:

        Gson g = new Gson();
        GeneralModel generalModel = g.fromJson(response, GeneralModel.class);

 

به همین سادگی!! حالا شما یه شیء دارید که اطلاعاتتون داخلش قرار گرفته. مقادیر به این شکل هستش:

        // generalModel.Data1.name = dan
        // generalModel.Data1.index1 = 4

        // generalModel.abc.name = jordan
        // generalModel.abc.index1 = 5

        // generalModel.xyz.name = jimi
        // generalModel.xyz.index1 = 2

 

ولی پیشنهاد میکنم JSON خودتون رو کمی استاندارد کنید. کار کردن با JSON هایی به این شکل که یه بخشیشون بی قاعده و همواره متغیر باشه کمی سخت و البته غیر منطقیه!

منتهی به این روشی که گفتم میتونید JSON رو به شیء تعریف بکنید که روش پیشنهادی خودِ گوگل هم هستش! برای تولید متن JSON هم میتونید از همین کتابخانه استفاده کنید.

لینک Github برای مطالعه بیشتر

موفق باشید.

gson-2.8.2.zip

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...