নেস্টেড ডকুমেন্টকে এমন কিছুর সাথে দেখা করার আগে ফ্ল্যাটেন করা প্রয়োজন যার নেস্টিংয়ের কোনো ধারণা নেই: একটি এনভায়রনমেন্ট ফাইল, একটি স্প্রেডশিট কলাম, একটি অনুবাদ তালিকা, নিজস্ব কোনো কাঠামো নেই এমন কী-মান জুটি দিয়ে তৈরি যেকোনো কিছু।
JSON ফ্ল্যাটেনার ব্যবহার করা
একটি দিক এবং একটি পাথ স্টাইল বেছে নিন, কারণ একটি ফ্ল্যাটেন করা
পাথ কীভাবে লেখা উচিত তার কোনো একক স্ট্যান্ডার্ড নেই। তিনটি বানান
অফার করা হয়, a.b.0, a/b/0 এবং a.b[0], এবং টুলটি বলে কোনটি
ব্যবহার হচ্ছে চুপচাপে একটি বেছে নেওয়ার পরিবর্তে।
ফ্ল্যাটেনিং
{"user":{"name":"Ana","tags":["a","b"]},"empty":{}}
ডটেড স্টাইলে:
{
"user.name": "Ana",
"user.tags.0": "a",
"user.tags.1": "b",
"empty": {}
}
নেস্টেড কীগুলো ডটেড পাথ হয়ে যায়, অ্যারের উপাদানগুলোর তাদের ইন্ডেক্স যোগ হয়, এবং ফাঁকা Object নিজেই একটি মান হিসেবে রাখা হয় মুছে ফেলার পরিবর্তে, কারণ এটি ছাড়া পাথ দেওয়ার মতো কিছু থাকত না এবং ডকুমেন্টটি রাউন্ড ট্রিপ টিকত না।
দুটি সত্যিকারের অস্পষ্ট কেস, খোলামেলাভাবে হ্যান্ডেল করা
ইতিমধ্যে সেপারেটর অক্ষর ধারণকারী একটি কী এমন একটি পাথ তৈরি করবে
যেটি কেউ সঠিকভাবে পড়তে পারবে না, তাই টুলটি এটিকে নামে প্রত্যাখ্যাত
করে: ডটেড স্টাইলে "a.b" এর মতো একটি কী একটি বার্তা সহ প্রত্যাখ্যাত
হয় যা কীটির নাম দেয় এবং একটি আলাদা পাথ স্টাইল সাজেশন করে,
চুপচাপে একটি ভাঙা পাথ তৈরি করার পরিবর্তে।
উল্টো দিকে, আনফ্ল্যাটেন করার সময়, শুধু সংখ্যা দিয়ে তৈরি একটি পাথ সেগমেন্ট হতে পারে একটি অ্যারে ইন্ডেক্স বা সংখ্যাসূচক একটি Object কী, এবং ফ্ল্যাটেন করা ডকুমেন্টে কোনোটি তা বলে না। “সংখ্যা অ্যারে ইন্ডেক্স” একটি টগল ঠিক এই কারণে: ভুল অনুমান বছর-কীড Object কে হাজার হাজার ফাঁকা স্লট থাকা অ্যারেতে পরিণত করে।
রাউন্ড ট্রিপ
উপরের উদাহরণটি আনফ্ল্যাটেন করে, একই পাথ স্টাইলে, সম্পূর্ণ মূল ডকুমেন্ট রিটার্ন করে: নেস্টেড Object, মূল ক্রমে দুই-উপাদান অ্যারে, এবং মুছে না ফেলে সংরক্ষিত ফাঁকা Object। এই রাউন্ড ট্রিপই পাথ স্টাইলের ডট এবং ইন্ডেক্স সঠিকভাবে পড়া হয়েছে তার প্রকৃত প্রমাণ, কারণ অ্যারে ইন্ডেক্সিং সম্পর্কে ভুল অনুমান সাধারণত শুধু আপনি পুনরায় রূপান্তরিত করে মূলের সাথে তুলনা করার পরেই দেখা যায়।
ফাঁকা কন্টেইনার রাখুন
এটি বন্ধ করলে ফাঁকা Objects এবং অ্যারে সম্পূর্ণ মুছে ফেলে ফ্ল্যাট এন্ট্রি হিসেবে রাখার পরিবর্তে, যা কার্যকরী যখন ফ্ল্যাট ফর্ম এমন একটি জায়গায় যাচ্ছে যেখানে সম্পূর্ণ ফাঁকা মান ধারণ করা যায় না, যেমন কিছু এনভায়রনমেন্ট ফাইল ফরম্যাট।