بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

نحوه نوشتن کلاس برای (حل شد)Gson

مدیریت گفتگو
120392 10 سال پیش
آخرین تغییر: 10 سال پیش

سلام دوستان

کسی یه اموزشی در مورد نحوه نوشته کلاس برای GSon  داره ؟

البته یه اموزش پیشرفته باشه چون تا سطح عادیش رو بلدم ولی وقتی جیسون تو درتو می شه رو نه

مثلا فرض کنید یه پست رو از سرور گرفتیم و اون پست کامنت هم داره و اون کامنت جواب کامنت داره ... اینا رو چجوری باید بهم وصل کرد و توی ریسکلرویو نمایش داد

ممنون میشم راهنمایی کنید

نظرات

Spirit 10 سال پیش
جستجو کردین؟ میخواستم بنویسم ولی مثال های خوبی زده شده‌ : "gson deserialize nested json" - اگر یادگرفتید یه نمونه Json که مد نظرتونه رو قرار بدید تا درباره نحوه نمایش بحث بشه، البته API به شکلی که تو این لینک پیاده بهتره بهتره، یعنی پست جدا، کامنت جدا.
120392 10 سال پیش
دو روزه دارم جستجو میکنم چیزی پیدا نمی کنم ...فارسی که اموزش خاصی نیست و فقط کپی پست سایتای خارجیه و انگلیسی هم توضیح زیادی ندادن اگه جدا باشن باید واسه هر کدوم یه ریکوست بره سمت سرور و برگرده که دردسرش زیاد ه و فشار میاره رو گوشی ولی انیجوری یک باره تموم اطلاعات رو بررسی می کنیم و فقط می مونه طراحی کلاس جیسونش که راحت بشه اون رو روی ریسکلیر ویو ست کرد ...
Spirit 10 سال پیش
ولی من خیلی چیزا پیدا میکنم :) درباره جدا بودن، دردسرش کجاست آخه، اغلب برنامه ها این شکلی هستن (البته اونایی که من دیدم)، مثل بازار، دیجی کالا، دیجیاتو و ... ، البته شرایط هر برنامه ای میتونه متفاوت باشه.
120392 10 سال پیش
منظورتون از جدا بودن جدا وبد کلاس هاست یا اینکه جداد جدا جیسون رو دریافت کنم ؟

پاسخ‌ها 3

Spirit 10 سال پیش

برای این Json فرضی دو کلاس نیاز داریم:

[
{
"id": 1,
"title": "title1",
"comments": [
{
"id": 1,
"reply": "reply1"

},
{
"id": 2,
"reply": "reply2"
}
]
},
{
"id": 2,
"title": "title2",
"comments": [
{
"id": 2,
"reply": "reply3"
},
{
"id": 3,
"reply": "reply4"
}
]
}
]

کلاس ها:

public class Post {
int id;
String title;
List<Comments> comments;
}
public class Comments {
int id;
String reply;
}

با Retrofit 2 هم میشه به این صورت دریافت کرد:

public interface GetPost {
@GET("/posts")
Call<List<Post>> get();
}

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("BASE_URL")
.addConverterFactory(GsonConverterFactory.create())
.build();
GetPost getPost = retrofit.create(Post.class);

Call<List<Post>> call = getPost.get();
call.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
if (response.isSuccess()) {
//
} else {
//
}
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
//
}
});

نظرات

120392 10 سال پیش

منم دقیقا اینجوری نوشت (Gson)

ولی حالا مشکل اینه توی ویو هولدر چجوری اونا رو ست کنم

ممنون میشم یه مثل بزنی

کلاسی که من نوشتم اینجوریه

https://paste.ubuntu.ir/spsy

و اینجوری اطلاعات رو می کشم بیرون

 for (ListPost ite:mypost)
{

if(Integer.parseInt(ite.getComment_count())>0) {
for (ListPost.Commenter cmd:mypost.get(position).getCommenters())

{
Log.i("LOG", cmd.getAvatar());
}
}
}

نظرات

120392 10 سال پیش

بلاخره حل شد

نکته کار اینجاست که اسم هر فیلد باید دقیقا شبیه مقداری باشه که از جیسون می گیرید وگرنه مقدار ست نمیشه و خالی می مونه

 

نظرات


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .