इसलिए मैं लंबे समय से चल रहे प्रश्नों को ट्रैक करने के लिए एक आंतरिक डीबीए टूल के लिए एक पुराने कोल्डफ्यूजन पेज को पुन: प्रस्तुत करने का प्रयास कर रहा हूं।

वर्तमान में पृष्ठ एक <CFQUERY name="GetLongRunners"> के रूप में एक क्वेरी करता है और फिर तालिका प्रारूप में डेटा प्रदर्शित करता है:

<table>
    <tr>
        <td>#GetLongRunners.spid#</td>
        <td>#GetLongRunners.Database#</td>
    </tr>
</table>

आदि आदि

मेरा लक्ष्य सभी प्रदर्शन सामग्री को अलग करना है, और बस इस पृष्ठ पर पोस्ट करने में सक्षम होना है, और फिर इसी डेटा के साथ JSON को वापस प्राप्त करना है। मैंने साथ खेला:

jsonData = SerializeJSON(#GetLongRunners#)

# GetLongRunners.database # के साथ अधिक विशिष्ट होने की कोशिश करने के साथ-साथ यह काम नहीं करता है। पृष्ठ 'jsonData = SerializeJSON' दिखाता है और मुझे एक त्रुटि मिलती है:

जटिल ऑब्जेक्ट प्रकारों को सरल मूल्यों में नहीं बदला जा सकता है।

मैं ColdFusion के लिए बहुत नया हूं, और मैं इस कार्यक्षमता को जितना संभव हो सके उतना छोटा करने की कोशिश कर रहा हूं, इसलिए मुझे वास्तव में केवल इस पृष्ठ पर पोस्ट करने के बारे में चिंता करना होगा, और फिर मैं कच्चे जेएसएन को सामने के अंत में काम करने के लिए प्राप्त कर सकता हूं।

मेरे द्वारा पाए गए सभी उदाहरणों ने प्रश्नों को बहुत अलग तरीके से बनाया है, और ऐसा करने के लिए यह मेरे दायरे से बाहर है।

मैं क्वेरी आउटपुट को json के रूप में क्रमबद्ध करने और इसे JSON ऑब्जेक्ट के रूप में वापस भेजने के लिए एक सरल तरीके का चित्र बना रहा हूं। या तो वह, या क्वेरी के परिणामों के माध्यम से लूप करके एक सरणी का निर्माण करें, और फिर उसे क्रमबद्ध करें।

कोई विचार?

धन्यवाद!

2
Jacob 2 पद 2015, 22:43

2 जवाब

सबसे बढ़िया उत्तर

यदि आप CF7 पर हैं, तो JSONUtil.cfc का प्रयास करें। बस सीएफसी डाउनलोड करें और इसे वेब रूट के तहत कहीं स्थापित करें। फिर यह उपयोग करने के लिए तैयार है।

अपनी .CFM स्क्रिप्ट के अंदर, क्वेरी चलाएँ, JSONUtil का एक उदाहरण बनाएं, और serializeJSON() विधि को लागू करें। बस इतना ही।

<cfsetting enablecfoutputonly="true">
<cfquery name="GetLongRunners">.... your query here .... </cfquery>
<cfset util = createObject("component", "path.to.JSONUtil")>
<cfcontent type="application/json" reset="true"> 
<cfoutput>#util.serializeJSON(GetLongRunners)#</cfoutput>

जैसा कि हेनरी ने उल्लेख किया है, इस तरह से .cfm फ़ाइलों का उपयोग करते समय अतिरिक्त सफेद स्थान समस्या हो सकती है। अपनी स्क्रिप्ट के शीर्ष पर cfsetting को शामिल करना सुनिश्चित करें। यह <cfoutput> टैग्स में लिपटे कंटेंट को छोड़कर हर चीज से आउटपुट को दबाएगा।

सच में मैं इसके बजाय एक सीएफसी का उपयोग करेगा, लेकिन एक समय में एक बात। यदि आप रुचि रखते हैं, तो यह धागा > एक दूरस्थ कार्य का उपयोग करने के साथ-साथ एक क्वेरी ऑब्जेक्ट को एक अधिक अनुकूल प्रारूप अर्थात संरचनाओं के सरणी में परिवर्तित करने का एक उदाहरण है।

1
Community 23 मई 2017, 11:59
<cfsetting enablecfoutputonly="true">

<!--- logic/calculation --->
<cfset jsonData = SerializeJSON( GetLongRunners )>

<!--- lastly, output the result --->
<cfoutput>#jsonData#</cfoutput>
1
Leigh 2 पद 2015, 19:51