1401-11-03 18:27 پاسخ های مختلف JSON را بدون استفاده از کلاس های POJO در جاوا تجزیه کنید
xavier12

 
من پاسخهای JSON را از REST API در جاوا تجزیه میکنم، اما نمیخواهم برای هر پاسخ یک کلاس جاوا ( POJO ) ایجاد کنم (پاسخها ساختارها و فیلدهای داده متفاوتی دارند). آیا تجزیه کننده JSON عمومی تری در جاوا وجود دارد که شبیه به نحو ساده جاوا اسکریپت باشد؟

JSON زیر تنها نتیجه یکی از بسیاری از نقاط پایانی REST است

{
"f1" : "volume",
"f2" : "gender",
"f3" : "days",
"f4" : [{
"id" : "F",
"name" : "female",
"values" : [{
"name" : "September",
"value" : 12
}
]
}, {
"id" : "M",
"name" : "male",
"values" : [{
"name" : "September",
"value" : 11
}
]
}
]
}


در جاوا اسکریپت، برای دسترسی به مقدار زن:

jsonRoot.f4[0].values[0].value


که از ایجاد چندین کلاس جاوا بهتر است. آیا می توانید چیزی مشابه یا راهی برای جلوگیری از ایجاد بسیاری از POJO ها پیشنهاد دهید؟
1401-11-04 20:36 POJO/POCO
حاجی شریفی
مؤسس سایت
 
سلام
متاسفانه بنده JAVA بلد نیستم
ولی منظورتان را متوجه میشوم و راه حل dotNet و C# آن را بلد هستم

اما از طرف یک برنامه نویس به برنامه نویس دیگر پیشنهاد میکنم که از تولید کلاس های POJO ( ما در C# میگوییم POCO ! ) نترسید و نگران آنها نباشید
یک Package ایجاد کنید مخصوص این کلاسها و همه را منظم در آن قرار دهید. ایجاد این کلاسهای POJO/POCO مزیت های بسیاری دارد
  • به برنامه شما نظم و ساختار میدهد
  • برای برنامه شما نوعی مستند سازی مجانی است، مشخص میکند متد چه میگیرد ، چه پس میدهد ، قرار است چه شود
  • جلوی بروز خطاهای Syntax ای را میگیرد و اگر در تایپ نام ها اشتباه کنید بجای آنکه زمان runtime این مشخص شود ، کامپایلر تشخیص داده و جلویتان را میگیرد ، این بسیار عالی است
  • این کلاسها داده ها را Typed میکنند به این معنی که مشخص است داده شما bool/int/string/date و... است
  • و...


بدون کلاس های POJO/POCO برنامه شما استخوان ندارد انگار ژله است ! مشخص نیست ورودی چیست؟ خروجی چیست؟
مشخص نیست Type مقادیر چیست، مشخص نیست کجا غلط املائی دارید
شبیه این است که همه متغییرها را همیشه با نام های بی معنی a,b,c نام گذاری کنید!
شبیه این است که int/long/bool/date و... مهم نیستند، اصلا چرا ایجاد شده اند! من میخواهم کل برنامه ام را با متغییر string بنویسم!
و...

به نظر من از کلاس های POJO/POCO استفاده کنید
فقط در مواقعی که واقعا واقعا نیاز به شرایط Full-Dynamic دارید و هیچ اطلاعی از ساختار داده ورودی ندارید باید از آنها استفاده نکنید
مانند برنامه های داده کاوی ، برنامه های Channel-Manager ها یا Gateway ها که شاید در شرایط Dynamic برای قبول و عبور هر داده ای تولید شوند.

و آخر آنکه لطفا Javascript را الگو خود قرار ندهید
موفق باشید.