/ / जेएसओएन परिणामों के आदेश को लागू करें - स्कैला

जेएसओएन परिणामों के आदेश को लागू करें - स्कैला

मेरे पास बहुत बड़े परिणाम सेट आयात किए जा रहे हैंjson। जेसन में डेटा की प्रत्येक पंक्ति एक बहुत ही विशिष्ट "कॉलम" ऑर्डर देता है, जिसे मैं जल्दी से फिर से शुरू करना चाहता हूं। मैं डेटा के प्रत्येक टुकड़े को संसाधित करने के लिए जांच / मिलान कुंजी के ओवरहेड से बचना पसंद करता हूं। दुर्भाग्यवश, scala.util.parsing.json इन कॉलम को मानचित्र ऑब्जेक्ट में रखता है, और जब मानचित्र के माध्यम से पुनरावृत्ति करता है, जिस क्रम में यह पुनरावृत्त होता है यादृच्छिक है, और जेएसओएन परिणाम में कॉलम के क्रम को जरूरी नहीं है। क्या पार्सर जेएसओएन कॉलम के आदेश को लागू करने का कोई तरीका है? एक विचार यह था कि अगर पार्सर को LinkedHashMap का उपयोग करने का कोई तरीका है या सूची मैप के रूप में यह वस्तुओं को उत्पन्न कर रहा है। क्या कक्षा को विस्तारित करके या अन्य लक्षण जोड़कर यह संभव होगा? क्या मेरे पास वैकल्पिक विकल्प हैं?

उत्तर:

उत्तर № 1 के लिए 1

मैं json4s की तरह कुछ कोशिश करने पर विचार करेंगे।

ऐसा लगता है कि जॉब्जेक्ट प्रकार ने फ़ील्ड का आदेश दिया है।

https://github.com/json4s/json4s

अन्यथा मैं पूछूंगा कि आपको उन्हें आदेश देने की आवश्यकता क्यों है? आप हमेशा कुंजी से लॉग इन कर सकते हैं।


जवाब के लिए 2 № 2

मैं आपको महत्वपूर्ण / मूल्य जोड़े के आदेश पर भरोसा करने से दृढ़ता से हतोत्साहित करता हूं। JSON ऑब्जेक्ट्स हैं परिभाषित जैसा:

एक वस्तु नाम / मूल्य जोड़े का एक अनियमित सेट है।

आदेश पर निर्भर होने से संभवतः आपके कोड की मुश्किल बग और असंगतता लागू होगी। गति के लिए व्यापार शुद्धता हमेशा एक बुरा सौदा है।

इसके बजाय मैं एक तेज, सही पार्सर खोजने का सुझाव देता हूं। मैंने उपयोग किया है जैक्सन इससे पहले, जो बहुत तेज है, और स्कैला के साथ अच्छी तरह से उपयोग किया जा सकता है। आप व्याख्या आपकी मनमानी कक्षा और जैक्सन ने कक्षा के उदाहरणों में जेएसओएन को पार किया। फिर आप इन उदाहरणों को देशी जावा / स्कैला ऑब्जेक्ट्स के रूप में संसाधित कर सकते हैं, जो कि बहुत तेज़ और मजबूत दोनों हैं।