آیا کد های json من برای یک آندروید کار استاندارد هست

- 3 هفته پیش
توسط علیرضا اصلانی آپدیت شد
پرهام عظیمی ( 2255 تجربه )
3 هفته پیش

سلام وقت بخیر دوستان
بنده مسئول بخش بکند (سرور) یک اپلیکیشن آندرویدی هستم که با آندروید کار دچار مشکل شدم که میگه جیسون های من به خاطر اینکه
داخلشون چندین object داره غیر استاندارده !!
ممنون میشم راهنمایی کنید که آیا واقعا کد های json من غیر استاندارده یا ضعف اندروید کاره ؟
لینک فایل pdf راهنما :
http://restjahan.ir/11.pdf

بهترین پاسخ انتخاب شده توسط پرهام عظیمی
علیرضا اصلانی
3 هفته پیش

@parhamazimy
آهان متوجه شدم منظورشونو اولا که خب این کارتون استاندارد و قشنگ نیست بهترش اینه آبجکت shop_info و similar رو هم داخل product بذاریدش یه جورایی حالت درختی میشه که قشنگترم هست اما درباره اینکه توسعه دهنده اندرویدتون گفته نمیشه اشتباه میکنه اتفاقا از اینکه سه تا url جدا این اطلاعات که هر سه تا مربوط به یک محصول هستن منطقا اشتباهه! همین url شمارو راحت میشه با retrofit و Gson هندلش کرد و مقادیرو راحت گرفت مثلا برای url شما

data class ProductResponse(
    @SerializedName("Root") var root: Root
)

data class Root(
    @SerializedName("product") var product: Product,
    @SerializedName("shop_info") var shopInfo: ShopInfo,
    @SerializedName("similar") var similar: Similar
)

data class Product(
    @SerializedName("id") var id: String,
    @SerializedName("store_id") var storeId: String,
    @SerializedName("category_id") var categoryId: String,
    @SerializedName("title") var title: String

    //other response
)

data class ShopInfo(
    @SerializedName("name") var name: String,
    @SerializedName("text") var text: String,
    @SerializedName("tell") var tell: String,
    @SerializedName("telegram") var telegram: String

    //other response
)

data class Similar(
    @SerializedName("id") var id: String,
    @SerializedName("title") var title: String,
    @SerializedName("nprice") var nprice: String,
    @SerializedName("price") var price: String

    //other response
)

بعد ProductResponse رو به api serviceش که با رتروفیت نوشته بده نتایج رو توی response.body در یافت کنه
البته این مثال بنده با کاتلین نوشته شده و اگرم با والی برای هندل کردن استفاده میکنه باز اونجام مشکلی نداره در کل مشکلی تو دریافت اطلاعات نیست ولی خب ساختارشم یجورایی قشتگو مرسوم نیست

سیدعلی موسوی ( 22531 تجربه )
3 هفته پیش

بنظرم اگر از لاراول برای وب سرویس استفاده میکنی اموزش api laravel رو از این سایت راکت بگیر بنظرم خیلی خیلی فکرت رو نسبت به ساخت وبسرویس های استاندارد روشن میکنه ، من که خروجی رو طبق اموزش های اقای موسوی برای برنامه نویسی خودم چه اندروید و چه ریکت تست کردم و واقعا مشکلی نداشتم .

علیرضا اصلانی ( 9119 تجربه )
3 هفته پیش

سلام یه نگاه اجمالی انداختم بزرگترین مشکلاتش تا اینجا که متوجه شدم یکی اینه هیچ ورژن بندی واسه api تون انجام ندادین که باعث میشه تغییراتی که تو ورژن های جدید اپلیکیشن انجام میدین با تغییر بک اند دیگه اونایی که با ورژن قدیمی تر اپلیکیشنتون کار میکنن دچار مشکل میشن یکی دیگه هم اصلا واسه دریافت اطلاعات لیستتون مثل اطلاعات محصولات چه تمامشون چه مربوط به دسته بندی خاصی رو صفحه بندی یا همون paginate نکردین! که فکر کنم منظور اندروید کارتون که گفته چندین آبجکت داره این بوده وگرنه من که منظورشون دقیق متوجه نشدم. مشکل دیگم که البته مشکل نیست و بیشتر عادت کساییه که با اطلاعات بک اند کار میکنن اینه که دیگه root نمینویسیم همیشه از کلمه data استفاده میکنیم که دقیق بفهمیم داخل این قسمت اطلاعات اصلیمون هستش دیگه چیز خاصی نداره فقط یکم فونت توضیحات واسه مطالعه رو مخه و فاصله زیاد بین لاین های اطلاعات json که خوانایی و درکشو کمتر میکنه دیگه همینارو من متوجه شدم از اطلاعاتتون

پرهام عظیمی ( 2255 تجربه )
3 هفته پیش

@aaslani
از اینکه وقت با ارزشتون رو در اختیار بنده گذاشتید سپاسگزارم و نکاتی که گفتین هم خیلی خوب بود .
مشکل اصلی من با اندروید کار اینه که ایشون میگن در اندروید نمیشه همزمان چند دسته رو گرفت برای مثال در url زیر
http://restjahan.ir/shop/api/product/7
اطلاعات json مربوط به یک محصول ارسال میشه که بنده در داخل
Root->product اطلاعات محصول
Root->shop_info اطلاعات فروشگاه
Root->similar اطلاعات محصولات مشابه
ارسال میکنم ولی اندروید کار ما میگن اینکار غلطه و نمیشه همزمان اطلاعات هر 3 بخش (اطلاعات محصول - فروشگاه - محصولات مشابه) گرفت و هر کدوم باید داخل یک url جدا قرار بگیره !
برای درک بهتر جیسون و دیکد کردن میتونید از سایت زیر کمک بگیرید :
http://json.parser.online.fr/

سیدعلی موسوی ( 22531 تجربه )
3 هفته پیش

خب این مسیر رو داشته باش بنظرم باید تویی یک url باشه، حالا اگر ایشون میخواد سه مسیر جدا داشته باشه براش بزن، دلیلش رو هم بپرس شاید نمیتونه با json دریافتی ارتباط برقرار کنه و شما باید براش توضیح بدین

پرهام عظیمی ( 2255 تجربه )
3 هفته پیش

@juza666
json رو کامل بهش توضیح دادم و متوجه شده
آیا واقعا داخل اندروید نمیشه جیسونی که 3 دسته داره رو گرفت ؟

علیرضا اصلانی ( 9119 تجربه )
3 هفته پیش

@parhamazimy
آهان متوجه شدم منظورشونو اولا که خب این کارتون استاندارد و قشنگ نیست بهترش اینه آبجکت shop_info و similar رو هم داخل product بذاریدش یه جورایی حالت درختی میشه که قشنگترم هست اما درباره اینکه توسعه دهنده اندرویدتون گفته نمیشه اشتباه میکنه اتفاقا از اینکه سه تا url جدا این اطلاعات که هر سه تا مربوط به یک محصول هستن منطقا اشتباهه! همین url شمارو راحت میشه با retrofit و Gson هندلش کرد و مقادیرو راحت گرفت مثلا برای url شما

data class ProductResponse(
    @SerializedName("Root") var root: Root
)

data class Root(
    @SerializedName("product") var product: Product,
    @SerializedName("shop_info") var shopInfo: ShopInfo,
    @SerializedName("similar") var similar: Similar
)

data class Product(
    @SerializedName("id") var id: String,
    @SerializedName("store_id") var storeId: String,
    @SerializedName("category_id") var categoryId: String,
    @SerializedName("title") var title: String

    //other response
)

data class ShopInfo(
    @SerializedName("name") var name: String,
    @SerializedName("text") var text: String,
    @SerializedName("tell") var tell: String,
    @SerializedName("telegram") var telegram: String

    //other response
)

data class Similar(
    @SerializedName("id") var id: String,
    @SerializedName("title") var title: String,
    @SerializedName("nprice") var nprice: String,
    @SerializedName("price") var price: String

    //other response
)

بعد ProductResponse رو به api serviceش که با رتروفیت نوشته بده نتایج رو توی response.body در یافت کنه
البته این مثال بنده با کاتلین نوشته شده و اگرم با والی برای هندل کردن استفاده میکنه باز اونجام مشکلی نداره در کل مشکلی تو دریافت اطلاعات نیست ولی خب ساختارشم یجورایی قشتگو مرسوم نیست

برای ارسال پاسخ باید وارد سایت شوید