2017-02-13 13 views
2

У меня есть код для QueryToJSONКак заставить QueryToJson процитировать все значения?

<cffunction name="queryToJSON" returntype="string" access="public" output="yes"> 
    <cfargument name="q" type="query" required="yes" /> 
    <cfset var o=ArrayNew(1)> 
    <cfset var i=0> 
    <cfset var r=0> 
    <cfloop query="Arguments.q"> 
    <cfset r=Currentrow> 
    <cfloop index="i" list="#LCase(Arguments.q.columnList)#"> 
     <cfset o[r][i]=Evaluate(i)> 
    </cfloop> 
    </cfloop> 
    <cfreturn SerializeJSON(o)> 
</cffunction> 

Он работает очень хорошо. Единственная проблема - пары key: value. value не всегда окружен двойными кавычками. Я хочу, чтобы все значения были окружены двойными кавычками.

Что я могу изменить, чтобы это произошло?

Пример: Желаемый результат:

{"zoho_item_name": "Shipping Charges", 
     "id": "128177000000051618", 
     "tms_name": "***Ship My book to me before class***", 
     "sku": "", 
     "description": "Shipping", 
     "rate": "6.57", 
     "Account": "Shipping Fees", 
     "taxable": "true", 
     "ExemptionReason": "", 
     "Source": "2", 
     "ReferenceId": "", 
     "LastSyncTime": "", 
     "Status": "Active", 
     "Usageunit": "", 
     "PurchaseRate": "0.00", 
     "PurchaseAccount": "", 
     "PurchaseDescription": "", 
     "InventoryAccount": "", 
     "ReorderPoint": "", 
     "Vendor": "", 
     "InitialStock": "", 
     "InitialStockRate": "", 
     "ItemType": "Sales" 
    } 

Фактический результат:

{ 
    "initialstockrate": "", 
    "inventoryaccount": "", 
    "usageunit": "", 
    "rate": 7.65, 
    "tms_name": "***Ship my item(s) to me before class***", 
    "taxable": true, 
    "description": "Shipping", 
    "sku": "", 
    "purchaseaccount": "", 
    "purchaserate": 0.00, 
    "status": "Active", 
    "account": "Shipping Fees", 
    "lastsynctime": "", 
    "initialstock": "", 
    "zoho_item_name": "Shipping Charges", 
    "source": 2, 
    "exemptionreason": "", 
    "id": 128177000000051618, 
    "reorderpoint": "", 
    "referenceid": "", 
    "vendor": "", 
    "itemtype": "Sales", 
    "purchasedescription": "" 
} 
+0

Ваш единственный аргумент - объект запроса. Он может иметь числовые, строковые и датированные типы данных. Он также может иметь нулевые значения. Если вы хотите использовать двойные кавычки, то задача вашей функции заключается в том, чтобы помещать их туда, а не в объект входящего запроса. –

+0

, который функционирует, когда я вызываю запрос, передаю запрос запросуtojson, и он дает мне это обратно, также все мои поля являются varchar, поэтому даже я пытаюсь сделать преобразование или преобразование не помогает здесь –

ответ

0

Как правило говоря, логические значения и цифры не должны быть строками. Это удаляет всю точку true/false и числа в первую очередь. Однако вы можете решить эту проблему, используя ToString.

<cfset o[r][i]= ToString(Evaluate(i))> 
+0

'toString', похоже, решает это –

+0

Рад, что я мог бы помочь –

+0

жаль, что я хочу сказать, это не сработало, черт меня, как я могу быть настолько глупым в том, что пропустил это слово –

 Смежные вопросы

  • Нет связанных вопросов^_^