2017-02-13 6 views
2

私はそれは非常にうまく機能QueryToJSONQueryToJsonにすべての値を引用させる方法

<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

私はクエリを呼び出すと、私はquerytojsonにクエリを渡すと、これは私にもすべてのフィールドがvarcharであるので、私もキャストをしようとするか変換することはここで役に立たない –

答えて

0

一般的に言えば、ブール値と数値は文字列であってはなりません。それは最初の場所で真偽と点数の全体を取り除きます。ただし、ToStringを使用してこれを解決できます。

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

'toString'は解決しているようですそれは –

+0

私は助けることができた喜んで –

+0

申し訳ありません私は言いたいこと、それは働かなかった、ダム私、どのように私はその言葉が欠けてばかすことができます –

関連する問題