জেএসএনে নাল মানগুলি ফেরত দেওয়ার জন্য পছন্দসই পদ্ধতিটি কী? আদিমদের জন্য আলাদা পছন্দ আছে কি?
উদাহরণস্বরূপ, সার্ভারে যদি আমার অবজেক্টটির কোনও মান না দিয়ে "মাইকাউন্ট" নামে একটি পূর্ণসংখ্যা থাকে তবে সেই মানটির জন্য সবচেয়ে সঠিক জেএসএন হ'ল:
{}
অথবা
{
"myCount": null
}
অথবা
{
"myCount": 0
}
স্ট্রিংগুলির জন্য একই প্রশ্ন - যদি আমার সার্ভারে নাল স্ট্রিং "মাইস্ট্রিং" থাকে তবে সেরা জেএসওএন:
{}
অথবা
{
"myString": null
}
অথবা
{
"myString": ""
}
বা (প্রভু আমাকে সাহায্য করুন)
{
"myString": "null"
}
আমি সংগ্রহগুলির জন্য সম্মেলনটি JSON এ খালি সংগ্রহ হিসাবে উপস্থাপন করার পছন্দ করি http://jtechies.blogspot.nl/2012/07/item-43-return-empty-arrays-or.html
একটি খালি অ্যারে উপস্থাপন করা হবে:
{
"myArray": []
}
সম্পাদনা সংক্ষিপ্তসার
'ব্যক্তিগত পছন্দের' যুক্তিটি বাস্তববাদী বলে মনে হয়, তবে এটিতে সংক্ষিপ্ত দৃষ্টিতে আমরা একটি সম্প্রদায় হিসাবে আরও বেশি সংখ্যক বৈসাদৃশ্য পরিষেবা / উত্স গ্রহণ করব। জেএসএন কাঠামোর জন্য সম্মেলনগুলি গ্রাহকরা পরিষেবাগুলির পুনরুদ্ধার এবং পুনরায় ব্যবহারকে স্বাভাবিক করতে সহায়তা করবে। যতক্ষণ একটি স্ট্যান্ডার্ড প্রতিষ্ঠা করা যায়, আমি বেশ কয়েকটি ব্যতিক্রম সহ বেশিরভাগ জ্যাকসন কনভেনশন গ্রহণ করার পরামর্শ দেব:
- বস্তুগুলি আদিমতার চেয়ে বেশি পছন্দ করা হয়।
- শূন্য সংগ্রহগুলি শূন্যের চেয়ে বেশি পছন্দ করা হয়।
- কোনও মান ছাড়াই অবজেক্টগুলি নাল হিসাবে প্রতিনিধিত্ব করা হয়।
- আদিমরা তাদের মূল্য ফিরিয়ে দেয়।
আপনি যদি বেশিরভাগ নাল মান সহ কোনও জেএসওএন বস্তুটি ফিরিয়ে দিচ্ছেন তবে আপনার একাধিক পরিষেবাদিগুলিতে রিফ্যাক্টর করার প্রার্থী থাকতে পারে।
{
"value1": null,
"value2": null,
"text1": null,
"text2": "hello",
"intValue": 0, //use primitive only if you are absolutely sure the answer is 0
"myList": [],
"myEmptyList": null, //NOT BEST PRACTICE - return [] instead
"boolean1": null, //use primitive only if you are absolutely sure the answer is true/false
"littleboolean": false
}
উপরের জেএসএনটি নিম্নলিখিত জাভা ক্লাস থেকে উত্পন্ন হয়েছিল।
package jackson;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonApp {
public static class Data {
public Integer value1;
public Integer value2;
public String text1;
public String text2 = "hello";
public int intValue;
public List<Object> myList = new ArrayList<Object>();
public List<Object> myEmptyList;
public Boolean boolean1;
public boolean littleboolean;
}
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.writeValueAsString(new Data()));
}
}
মাভেন নির্ভরতা:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.3.0</version>
</dependency>
NSNull
শ্রেণি রয়েছে যার একটি সিঙ্গলটন উদাহরণ রয়েছে। এই দৃষ্টান্তের একটি উল্লেখটি JSON এর সমতুল্য null
। আমি অনুমান করব যে অন্য কোনও ভাষা একই কাজ করতে পারে। অবশ্যই, অনুমিত শ্রেণিতে কাস্টিংয়ের আগে একজনকে প্রাপ্ত বস্তুর শ্রেণি পরীক্ষা করতে হবে - যেমনটি ছিল "নাল সচেতন" হতে হবে।
Collections.emptyList()
Null
শ্রেণি থাকতে পারে না কারণ আপনি কেবল তার নিজস্ব ধরণের বা ধরণের অবজেক্টগুলিতে এর মান নির্ধারণ করতে সক্ষম হবেন Object
।
null
, বিবেচনা করুন যে আপনার ক্লায়েন্ট খালি স্ট্রিংয়ের সাথে আরও ভাল কিনা বাnull
- "নাল" শব্দযুক্ত একটি স্ট্রিং একটি বৈধ মান থেকে পৃথক নয়, এটি করবেন না।