2012-07-24 13 views
5

अगर मैं एक फ़ाइल जिनकी सामग्री की तरह दिखाई देता था:एकाधिक रूट तत्व वाले JSON फ़ाइल को कैसे पढ़ा जाए?

{"one": 1} 
{"two": 2} 

मैं बस एक अलग JSON ऑब्जेक्ट के रूप में प्रत्येक अलग लाइन पार्स सकता है (JsonCpp का उपयोग)। लेकिन क्या होगा यदि फ़ाइल की संरचना कम सुविधाजनक थी:

{ 
    "one":1 
} 

{ 
    "two":2 
} 
+0

संबंधित प्रश्न: [जैक्सन ऑब्जेक्टमैपर का उपयोग करके पिछली कचरा का पता लगाने के लिए कैसे करें] (http://stackoverflow.com/questions/26003171/how-to-detect-trailing-garbage-using-jackson-objectmapper) – sleske

उत्तर

5

आपके प्रश्न में कोई भी उदाहरण वैध JSON ऑब्जेक्ट नहीं है; एक JSON ऑब्जेक्ट में केवल एक रूट हो सकती है। आपको फ़ाइल को दो ऑब्जेक्ट्स में विभाजित करना होगा, फिर उन्हें पार्स करें।

आप यदि किसी विशेष स्ट्रिंग मान्य JSON है या नहीं यह देखने के लिए http://jsonlint.com उपयोग कर सकते हैं।

तो मेरा सुझाव है या तो बदल रहा है क्या तुमने कभी एक एकल फाइल में कई JSON ऑब्जेक्ट के डंपिंग है अलग फाइलों में यह करने के लिए, या एक JSON जड़ वस्तु में एक मूल्य के रूप में प्रत्येक वस्तु डाल करने के लिए।

आप जो कुछ भी इन पैदा कर रही है पर कोई नियंत्रण नहीं है, तो आप फ़ाइल को अपने आप को अलग जड़ वस्तुओं बाहर लेने के लिए पार्स करने अटक कर रहे हैं।

यहाँ एक JSON ऑब्जेक्ट में उन लोगों के डेटा एन्कोडिंग का एक मान्य तरीका है:

{ 
    "one": 1, 
    "two": 2 
} 

या यदि आपका वास्तव में अलग वस्तुओं, इस तरह की जरूरत है:

{ 
    "one": 
    { 
     "number": 1 
    }, 
    "two": 
    { 
     "number": 2 
    } 
} 
+1

पहला उदाहरण है एक वैध वस्तु नहीं है, यह सवाल का मुद्दा है। –

+1

क्षमा करें, मुझे यह उल्लेख करना चाहिए था कि हमें यह मानना ​​चाहिए कि मेरे पास फ़ाइल के प्रारूप का कोई नियंत्रण नहीं है। – Tshepang

+2

मैं एक JSON पार्सर कि कई जड़ वस्तुओं (शायद किसी ने मुझे सही कर सकते हैं) के साथ सौदा होगा के बारे में पता नहीं कर रहा हूँ, तो आप शायद अटक पार्स कर रहे हैं खोजने के लिए जहां जड़ वस्तुओं रहे हैं मिलान {} गिनती करने के लिए। – Almo

2

रोब कैनेडी सही है। इसे दूसरी बार कॉल करने से अगला ऑब्जेक्ट निकाला जाएगा, और इसी तरह। जेएसन लिब का अधिकांश आप सभी को एक ही रूट में करने में मदद नहीं कर सकता है। जब तक आप क्यूटी में अधिक उच्च अंत ढांचे का उपयोग नहीं कर रहे हैं।

+0

जो क्यूटी रूपरेखा है कि – Tshepang

+0

हाँ, 'jsoncpp' रूप R.Kennedy द्वारा वर्णित काम करता है। – cdunn2001

संबंधित मुद्दे