में बड़ी जेसन फ़ाइल को पार्स करना मैंने जेसन.नेट का "जेसनकॉन्टर.डिसरियललाइज (जेसन)" विधि का उपयोग किया है, अब तक जो काफी अच्छा काम करता है और ईमानदार होने के लिए, मुझे इससे ज्यादा कुछ नहीं चाहिए।.NET
मैं पृष्ठभूमि (कंसोल) ऐप पर काम कर रहा हूं जो लगातार विभिन्न यूआरएल से जेसन सामग्री डाउनलोड करता है, फिर परिणाम को नेट ऑब्जेक्ट की सूची में deserializes।
using (WebClient client = new WebClient())
{
string json = client.DownloadString(stringUrl);
var result = JsonConvert.DeserializeObject<List<Contact>>(json);
}
सरल कोड स्निपेट के ऊपर शायद सही प्रतीत नहीं होता है, लेकिन यह काम करता है। जब फ़ाइल बड़ी होती है (15000 संपर्क - 48 एमबी फ़ाइल), JsonConvert.DeserializeObject समाधान नहीं है और रेखा एक अपवाद प्रकार JsonReaderException फेंकता है।
डाउनलोड जेसन एक सरणी है और इस तरह नमूना दिखता है। संपर्क deserialized जेसन ऑब्जेक्ट के लिए एक कंटेनर वर्ग है।
[
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
}
]
मेरा प्रारंभिक अनुमान यह स्मृति से बाहर है। जिज्ञासा से बाहर, मैंने इसे जेएरे के रूप में पार्स करने की कोशिश की जिसके कारण भी एक ही अपवाद हुआ।
मैंने जेसन.Net दस्तावेज़ में गोता लगाने और समान धागे पढ़ने के लिए शुरू कर दिया है। चूंकि मैंने अभी तक एक समाधान समाधान तैयार नहीं किया है, इसलिए मैंने यहां एक प्रश्न पोस्ट करने का फैसला किया है।
मैं किसी भी सलाह/कोड स्निपेट की सराहना करता हूं जो इस मुद्दे पर शोध करने, इसके बारे में और अधिक सीखने में मदद कर सकता है।
धन्यवाद :)
अद्यतन: लाइन द्वारा लाइन deserializing है, मैं एक ही त्रुटि मिली: "।, स्थिति 1. [पथ ', लाइन 600,003" तो मैंने उन दोनों को डाउनलोड करने के लिए किया था और उन्हें नोटपैड ++ में चेक किया था। मैंने देखा कि यदि 12000 वें तत्व के बाद सरणी की लंबाई 12000 से अधिक है, तो "[" बंद है और एक और सरणी शुरू होती है। दूसरे शब्दों में, json वास्तव में इस तरह दिखता है:
[
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
}
]
[
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
},
{
"firstname": "sometext",
"lastname": "sometext"
}
]
'और लाइन JsonReaderException.' की एक अपवाद प्रकार क्या अपवाद संदेश है फेंकता है? कोई आंतरिक अपवाद? – Eser
जेएसओएन सामग्री को पढ़ने के बाद अतिरिक्त पाठ का सामना करना पड़ा: [। पथ '', लाइन 600003, स्थिति 1. "- यह अपवाद संदेश – Yavarino
@Yavarski क्या आप निश्चित हैं कि आप JSON मान्य हैं? –