2008-10-01 4 views
5

इंटरवेब्स इस पर कोई मदद नहीं है। हम serializeJSON का उपयोग करके कोल्डफ्यूज़न में डेटा एन्कोड कर रहे हैं और json_decode का उपयोग करके इसे PHP में डीकोड करने का प्रयास कर रहे हैं। अधिकांश समय, यह ठीक काम कर रहा है, लेकिन कुछ मामलों में, json_decodeNULL देता है। हमने स्पष्ट अपराधियों की तलाश की है, लेकिन serializeJSON अपेक्षाकृत चीजों को स्वरूपित कर रहा है। समस्या और क्या हो सकता है?किसी को भी कोल्डफ्यूजन की धारावाहिक जेएसओएन विधि से PHP के json_decode पर जाने वाले मुद्दे हैं?

अद्यतन: कुछ लोगों (बुद्धिमानी से) ने मुझे समस्या उत्पन्न करने वाले आउटपुट को पोस्ट करने के लिए कहा। मैं, सिवाय इसके कि हमने अभी पाया है कि परिणाम सेट हमारे सभी डेटा (कुल 565,135 ASCII वर्णों के लिए 2300+ किराये की संपत्तियों के लिए लिस्टिंग जानकारी) है! यह एक समस्या हो सकती है, हालांकि मैंने स्ट्रिंग के लिए अधिकतम आकार के बारे में PHP दस्तावेज़ों में कुछ भी नहीं देखा। वहां सीमित कारक क्या होगा? राम?

अद्यतन द्वितीय: ऐसा लगता है कि समस्या यह थी कि हमारे कुछ उपयोगकर्ताओं ने माइक्रोसॉफ़्ट वर्ड टेक्स्ट को "स्मार्ट" उद्धरणों के साथ कॉपी और पेस्ट किया था। उन अजीब उपयोगकर्ताओं ...

+0

पारित क्या आपके पास JSON आउटपुट का एक उदाहरण है जो न्यूल को डीकोड करता है? – modius

+0

यह एक अच्छा सवाल/समस्या है। क्या आपके पास कोई भाग्य है इसे हल करना? मुझे याद है कि उन उद्धरण हमेशा हत्यारे होते हैं - उदा। उन्हें फ्लैश में आउटपुट करने का प्रयास करें। मुझे लगता है कि हमने एन्कोडिंग को ठीक करने के लिए एमबी का इस्तेमाल किया और फिर यह काम किया, हालांकि मुझे याद नहीं है। – Till

+0

cflib.org में यादृच्छिक चीजें शब्द प्रविष्टियों की सफाई के लिए एक महान 'demoronizer' UDF है। –

उत्तर

1

क्या आप इस मुद्दे को विश्वसनीय रूप से दोहरा सकते हैं? और यदि ऐसा है तो आप नमूना डेटा पोस्ट कर सकते हैं जो शून्य देता है? मुझे यकीन है कि आप यह जानते हैं, लेकिन दूसरों के लिए जानकारी के लिए जो इस पर ठोकर खा रहे हैं, RFC 4627 जेएसओएन का वर्णन करता है, और वैध जावास्क्रिप्ट मान्य मानने के लिए यह एक आम गलती है। जावास्क्रिप्ट के सबसेट के रूप में जेएसओएन के बारे में सोचना बेहतर है।

संपादित के जवाब में

:

मैं आपकी जानकारी अपने PHP स्क्रिप्ट में डाला जा रहा है (पहले यह json_decode के लिए रवाना पारित किया जा रहा है) सुनिश्चित करने के लिए देखने का सुझाव देते हैं, और यह भी कि जानकारी मान्य (विशेष रूप से आप अगर विश्वसनीय रूप से त्रुटि पुन: उत्पन्न कर सकते हैं)। आप सुविधा के लिए online validator आज़मा सकते हैं। बहुत सीमित जानकारी के आधार पर ऐसा लगता है कि यह समय समाप्त हो रहा है और सभी डेटा को पकड़ नहीं रहा है? क्या ऐसे बड़े डेटासेट की आवश्यकता है?

0

आप इसे किसी अन्य पार्सर के साथ पार्स करने का प्रयास कर सकते हैं, और एक त्रुटि की तलाश कर सकते हैं - मुझे पता है कि पाइथन के JSON पार्सर्स बहुत उच्च गुणवत्ता वाले हैं। यदि आपके पास पाइथन स्थापित है तो demjson के सिंटैक्स चेकर के माध्यम से टेक्स्ट चलाने के लिए पर्याप्त आसान है। यदि यह एक बहुत बड़ा डेटासेट है, तो आप मेरी लाइब्रेरी jsonlib का उपयोग कर सकते हैं - स्मृति उपयोग डेमसन से अधिक होगा, लेकिन यह तेजी से चल जाएगा क्योंकि यह सी

2

पर आप यूटीएफ -8 में परिचालन करने और PHP को देने का प्रयास कर सकते हैं उस तथ्य को जानें।

मुझे PHP के json_decode के साथ कोई समस्या थी जो यूटीएफ -8 JSON स्ट्रिंग को डीकोड करने में सक्षम नहीं था (आपके पास घुंघराले उद्धरणों के अलावा कुछ "अजीब" वर्णों के साथ)। मेरा समाधान PHP को संकेत देना था कि मैं HTML पृष्ठ में सामग्री-प्रकार मेटा टैग डालने से यूटीएफ -8 मोड में काम कर रहा था जो PHP को सबमिट कर रहा था। इस तरह प्रस्तुत डेटा की सामग्री प्रकार है, जो JSON स्ट्रिंग है, यह भी UTF-8 होगा:

<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> 

उसके बाद, पीएचपी के json_decode ठीक से स्ट्रिंग को डिकोड करने में सक्षम था।

1

मुझे यह सही समस्या थी और यह पता चला कि यह कोल्डफ्यूजन के कारण जेएसओएन पैकेट में कोई प्रिंट करने योग्य वर्ण नहीं लगा रहा था (ये वर्ण वास्तव में हमारे डेटा में मौजूद थे) लेकिन वे JSON में नहीं जा सकते हैं।

इस साइट पर दो प्रश्नों ने मेरे लिए यह समस्या तय की, हालांकि मैं कोल्डफ्यूजन समाधान की बजाय PHP समाधान के लिए गया क्योंकि मुझे लगा कि यह दोनों का अधिक सुरुचिपूर्ण था।

PHP solution

फिक्स स्ट्रिंग इससे पहले कि आप json_decode लिए()

$string = preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $string); 

ColdFusion solution

उपयोग cleanXmlString() serializeJSON उपयोग करने के बाद कि इतने सवाल में समारोह()

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