मुझे लगता है कि वस्तुओं की एक json सरणी शामिल एक फ़ाइल है:उपयोग जैक्सन स्ट्रीम करने के लिए पार्स Json का एक सरणी ऑब्जेक्ट्स
[ { "test1": "abc" }, { "test2": [1, 2, 3] } ]
मैं उपयोग का उपयोग करने के जैक्सन के JsonParser इस फ़ाइल से एक InputStream लेने के लिए, और हर कॉल पर .next करने के लिए(), मैं इसे सरणी से एक ऑब्जेक्ट प्रदान करना चाहते हैं इच्छा जब तक यह वस्तुओं से बाहर नहीं हो जाता है या विफल रहता है।
क्या यह संभव है?
केस का उपयोग करें: मेरे पास एक बड़ी फ़ाइल है जिसमें एक जेसन सरणी है जिसमें विभिन्न स्कीमा के साथ बड़ी संख्या में ऑब्जेक्ट हैं। मैं स्मृति में सब कुछ लोड करने से बचने के लिए एक समय में एक वस्तु प्राप्त करना चाहता हूं।
संपादित करें:
मैं पूरी तरह से उल्लेख करना भूल गया। मेरा इनपुट एक स्ट्रिंग है जो समय के साथ जोड़ा जाता है। यह धीरे-धीरे समय के साथ जेसन जमा करता है। मैं स्ट्रिंग से पार्स ऑब्जेक्ट को निकालने के ऑब्जेक्ट द्वारा ऑब्जेक्ट को पार्स करने में सक्षम होने की उम्मीद कर रहा था।
लेकिन मुझे लगता है कि इससे कोई फर्क नहीं पड़ता! मैं इसे मैन्युअल रूप से तब तक कर सकता हूं क्योंकि jsonParser स्ट्रिंग में इंडेक्स वापस कर देगा।
अरे इयान, लगभग 2 वर्षों के बाद यह कोड वास्तव में अभी भी काम करता है और मेरा दिन बचाता है। बस पुष्टि करने की कोशिश कर रहा है, हर बार मैपर पढ़ने वाले पेड़ को तब तक करता है जब तक कि यह शुरू नहीं हुआ END_OBJECT टोकन मैचों में, पार्सर का "कर्सर" भी सही हो गया है? इसलिए यदि मैं थोड़ी देर के बाद सही 'parser.nextToken()' करता हूं, तो मुझे अभी पढ़ने के बाद अगला ऑब्जेक्ट पढ़ना चाहिए, सही? –
@JamesJiang सही। 'ReadTree'' को 'START_OBJECT' पर स्थित एक पार्सर दिया गया है, जब तक कि वह मिलान 'END_OBJECT' तक पहुंच न जाए, तब तक पार्सर से ईवेंट का उपभोग करेगा और उस पर स्थित पार्सर को छोड़ देगा। –