2016-03-04 3 views
16

मैं आईओएस परियोजना पर काम कर और JSON स्ट्रिंग भेजे WCF वेब सेवा के माध्यम से बैकेंड कर रहा हूँ, इसके कई उपयोगकर्ताओं के लिए सफलतापूर्वक काम कर रहा लेकिन कुछ उपयोगकर्ताओं को बैकएंड अधूरा json स्ट्रिंग प्राप्त करने के लिए। JSON स्ट्रिंगJSON ऑब्जेक्ट WCF वेब सेवा पक्ष में ठीक से deserializing नहीं

NSData *data = [NSJSONSerialization dataWithJSONObject:EmployeeDetails options:0 error:nil]; 
    NSString *JsonString = [[NSString alloc] initWithData:data 
               encoding:NSUTF8StringEncoding]; 

पैदा करने और नीचे दिए गए कोड से अनुरोध के साथ json स्ट्रिंग अटैच किया जा रहा

[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
[request setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]]; 

EmployeeDetails के लिए

कोड कर्मचारी विवरण के साथ NSMutableDictionary है।

और

यहाँ सफल JSON स्ट्रिंग बैकएंड

{"FirstName":"Donald","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"321-300-6874","Position":"3","CarrierNum":"4","EmpNum":"96874"} 

और अधूरा JSON स्ट्रिंग

{"FirstName":"roset","LastCBPaymentType":6,"AcceptEmail":true,"CellPhone":"321-300-6874","Position":"3","CarrierNum":"4","EmpNum":"98799 

अधूरा json स्ट्रिंग कुछ उपयोगकर्ता के लिए बैकएंड में उत्पन्न से deserialized है।

कोई भी इस मुद्दे को हल करने में मदद कर सकता है?

+0

आपको यहां क्या परिणाम मिलता है 'कर्मचारी विवरण' –

+0

@ Anbu.Karthik हमें अपूर्ण डेटा ({"फर्स्टनाम": "रोसेट", "लास्टसीबीपेमेंट टाइप": 6, "AcceptEmail": सत्य, "सेलफोन": "321 -300-6874 "," स्थिति ":" 3 "," कैरियर नूम ":" 4 "," एम्प्नम ":" 9879), कुछ उपयोगकर्ताओं के लिए यह केवल हो रहा है –

+0

इसका मतलब है कि आपको सर्वर से प्रतिक्रिया मिली है लेकिन सिंचाई्यूल फॉर्मूटा, सही –

उत्तर

0

मुझे हाल ही में PHP/CodeIgniter में एक ही समस्या थी और समस्या यह थी कि JSON को मेरे हैंडलर पहुंचने से पहले कुछ अत्यधिक महत्वाकांक्षी नियमित अभिव्यक्तियों के माध्यम से "sanitized" किया जा रहा था। शायद कुछ समान स्वच्छता है जो डब्ल्यूसीएफ में होती है?

बातें मैं कोशिश करेंगे:

  1. पुष्टि करते हैं कि अनुरोध (पोस्ट?) वास्तव में पूरे शरीर भेज रहा है के रूप में आप उम्मीद कर Charles Proxy का उपयोग करना।

  2. कोशिश सामग्री प्रकार आवेदन/बजाय json।

1

ठीक है, मैं कहेंगे TomSwift सही रास्ते पर है ... यह स्पष्ट हो गया कि टूटी हुई JSON बस स्ट्रिंग के अंत से याद आ रही है "} है। यही कारण है कि वास्तव में कुछ कैसा दिखता है एक से स्वच्छ किया जा रहा regex ... आप वास्तव में समस्या के स्रोत को खोजने चाहिए, लेकिन एक त्वरित और गंदा ठीक के लिए आप यह पता लगा जबकि, तो आप सिर्फ JSON आपको प्राप्त पर अपने खुद के regex चला सकते हैं और अगर यह साथ समाप्त नहीं होता एक "}, बस इसे जोड़ें ... पहले कुछ ऐसा करें: '/" [0-9] + $ /' (जांचने के लिए कि अंत में एक खुली संख्यात्मक स्ट्रिंग है, यदि वहां है, तो आप इसे जोड़कर बंद कर देते हैं ") फिर जांचें कि '/} $ /' (if} अंतिम char है, यदि यह नहीं है: इसे जोड़ें)।

याद रखें, उपर्युक्त केवल एक अस्थायी फिक्स होगा (क्योंकि यह कुछ हद तक भारी है और वास्तव में वह सुंदर नहीं है), लेकिन मैं कल्पना कर सकता हूं कि समय की बाधाओं के कारण मुझे ऐसा कुछ करने के लिए मजबूर होना पड़ रहा है। यदि समस्या वास्तव में एपीआई के भीतर से आ रही है, तो आप रचनाकारों को इसके बारे में बता सकते हैं और इसे तय करते समय उपरोक्त फिक्स की तरह कुछ उपयोग कर सकते हैं।

पीएस। यदि कोई उपरोक्त की तरह किसी फिक्स का उपयोग करना चुनता है, तो कृपया, कृपया जो कुछ भी आप पवित्र रखते हैं, उसके प्यार के लिए कृपया समझाते हुए कोड में एक टिप्पणी छोड़ दें, आपने इसे क्यों किया (जैसा कि हमें कहने के विपरीत है आपने किया ...)।

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