بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
نحوه نوشتن کلاس برای (حل شد)Gson
سلام دوستان
کسی یه اموزشی در مورد نحوه نوشته کلاس برای GSon داره ؟
البته یه اموزش پیشرفته باشه چون تا سطح عادیش رو بلدم ولی وقتی جیسون تو درتو می شه رو نه
مثلا فرض کنید یه پست رو از سرور گرفتیم و اون پست کامنت هم داره و اون کامنت جواب کامنت داره ... اینا رو چجوری باید بهم وصل کرد و توی ریسکلرویو نمایش داد
ممنون میشم راهنمایی کنید
+1
0
جستجو کردین؟ میخواستم بنویسم ولی مثال های خوبی زده شده : "gson deserialize nested json" - اگر یادگرفتید یه نمونه Json که مد نظرتونه رو قرار بدید تا درباره نحوه نمایش بحث بشه، البته API به شکلی که تو این لینک پیاده بهتره بهتره، یعنی پست جدا، کامنت جدا. (10 سال پیش)
0
0
دو روزه دارم جستجو میکنم چیزی پیدا نمی کنم ...فارسی که اموزش خاصی نیست و فقط کپی پست سایتای خارجیه و انگلیسی هم توضیح زیادی ندادن
اگه جدا باشن باید واسه هر کدوم یه ریکوست بره سمت سرور و برگرده که دردسرش زیاد ه و فشار میاره رو گوشی ولی انیجوری یک باره تموم اطلاعات رو بررسی می کنیم و فقط می مونه طراحی کلاس جیسونش که راحت بشه اون رو روی ریسکلیر ویو ست کرد ... (10 سال پیش)
0
0
ولی من خیلی چیزا پیدا میکنم :) درباره جدا بودن، دردسرش کجاست آخه، اغلب برنامه ها این شکلی هستن (البته اونایی که من دیدم)، مثل بازار، دیجی کالا، دیجیاتو و ... ، البته شرایط هر برنامه ای میتونه متفاوت باشه. (10 سال پیش)
0
0
منظورتون از جدا بودن جدا وبد کلاس هاست یا اینکه جداد جدا جیسون رو دریافت کنم ؟ (10 سال پیش)
برای این سوال 3 پاسخ وجود دارد.
پاسخ به سوال
Spirit
10 سال پیش
+3
0
برای این 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 سال پیش
0
0
منم دقیقا اینجوری نوشت (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 سال پیش
0
0
بلاخره حل شد
نکته کار اینجاست که اسم هر فیلد باید دقیقا شبیه مقداری باشه که از جیسون می گیرید وگرنه مقدار ست نمیشه و خالی می مونه
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .