2012-06-24 13 views
30

मैं एक कठिन समय आईओएस 5.कोको त्रुटि में आईओएस 5 JSON को पार्स परिणाम 3840

{"States": [{"Name": "Arizona","Cities": [{"Name": "Phoenix"}]},{"Name": "California","Cities": [{"Name": "Orange County"},{"Name": "Riverside"},{"Name": "San Diego"},{"Name": "San Francisco"}]},{"Name": "Nevada","Cities": [{"Name": "Las Vegas"}]}]} 

पर स्ट्रिंग JSON नीचे पार्स करने और यहाँ आ रही है मेरी कोड है इस त्रुटि:

JSON Error: The operation couldn’t be completed. (Cocoa error 3840.)

मैं क्योंकि मैं सीएल इस पर कुछ मदद की सराहना करेंगे, इसे ठीक करने में जल्दी और अक्षम।

[[NSBundle mainBundle] pathForResource:@"Locations-JSON" ofType:@"rtf"] 

आपका डाटा एक RTF फ़ाइल है ??:

+0

इसे सफलतापूर्वक jsonData सेट करता है? –

उत्तर

22

एक बात है कि मुझे गलत के रूप में हमलों यह है यह txt फ़ाइल (या किसी अन्य प्रकार की सादे पाठ फ़ाइल) होनी चाहिए। आरटीएफ फ़ाइलें आमतौर पर पाठ स्वरूपण डेटा होते हैं, इस तरह:

{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf470 
{\fonttbl\f0\fswiss\fcharset0 Helvetica;} 
{\colortbl;\red255\green255\blue255;} 
\margl1440\margr1440\vieww10800\viewh8400\viewkind0 
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural 

\f0\fs24 \cf0 \{"States": [\{"Name": "Arizona","Cities": [\{"Name": "Phoenix"\}]\},\{"Name": "California","Cities": [\{"Name": "Orange County"\},\{"Name": "Riverside"\},\{"Name": "San Diego"\},\{"Name": "San Francisco"\}]\},\{"Name": "Nevada","Cities": [\{"Name": "Las Vegas"\}]\}]\}} 

जब मैं एक डेटा के रूप में में कि पढ़ सकते हैं और JSON के रूप में यह पार्स करने के लिए प्रयास करते हैं, मैं 3840 त्रुटि आप देख रहे हैं मिलता है। उस त्रुटि का वर्णन कहता है:

The data couldn’t be read because it has been corrupted. (No string key for value in object around character 2.)

तो मुझे ऐसा लगता है कि आपके पास वास्तव में JSON नहीं है। आपके पास आरटीएफ डेटा है।

+1

हाँ, आप सही हैं, वह था। मैन, मैं अभी वास्तव में बेवकूफ महसूस करता हूं ... हालांकि मदद के लिए धन्यवाद। – Gup3rSuR4c

1

यदि आप JSON की वजह से यहां पहुंचे और आरटीएफ की वजह से नहीं, कृपया बाहर इस जवाब की जाँच करें: IOS JSON Deserialization failure - STIG/NSJSONSerializer

+1

मुझे यह त्रुटि अमान्य JSON (पिछला; JSON ऑब्जेक्ट परिभाषा के अंत में) होने से मिली है। जेएसईसी सलाह आपके JSON को वहां से किसी भी JSON सत्यापनकर्ता वेबपृष्ठों का उपयोग करके सत्यापित करने के लिए हो सकती है। –

10

मैं एक ऐसी ही समस्या मारा था। जब मैं सर्वर से JSON डेटा डाउनलोड करता हूं तो मेरा JSON पार्सर intermittently काम करता है। क्या आपको इस फ़ंक्शन से अपना JSON डेटा मिला?

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 

इस समारोह से वापस लौटाया गया NSData आंशिक डेटा हो सकता है। आपको टाइप: एनएसएमयूटेबलडेटा के साथ एक इंस्टेंस वैरिएबल में डेटा को जोड़ना होगा। फिर आप अपने JSON को किसी अन्य फ़ंक्शन में निम्नानुसार संसाधित करते हैं:

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 

विवरण के लिए इस आलेख को पढ़ना। यह मेरे लिए काम करता

https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

10

मैं एक NSString को NSData वस्तु परिवर्तित करके मेरी JSON 3840 त्रुटि का समस्या निवारण करने में सक्षम था:

NSError *error; 

NSObject *object = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 

if (object == nil) { 
    NSString *serverResponse = [[NSString alloc] initWithData:responseData encoding:NSASCIIStringEncoding]; 

    NSLog(@"\n\nError:\n%@\n\nServer Response:\n%@\n\nCrash:", error.description, serverResponse); 
    [NSException raise:@"Invalid Data" format:@"Unable to process web server response."]; 
} 
+0

इससे मेरी मदद मिली। क्या आपको कोई आइडिया है कि इस प्रतिक्रिया का क्या मतलब हो सकता है @ kraftydevil? सर्वर को एक आंतरिक त्रुटि आई और आपका अनुरोध पूरा करने में असमर्थ था। या तो सर्वर ओवरलोड हो गया है या एप्लिकेशन में कोई त्रुटि है – SleepsOnNewspapers

+1

@ hsavit1 मेरा ज्ञान मूल स्थान पर सीधे बंद हो जाता है। आपकी त्रुटि निश्चित रूप से सर्वर/वेब सेवा के साथ एक मुद्दा है लेकिन यह मेरे सिर पर है। – kraftydevil