1

SerializeJSON()を使用して、CFCのインスタンスを文字列に変換しようとしています。これは、データベースに保存して、後で再度引き出すことができます。

私が抱えている問題は、次のコードを使用していることです。

<cfdump var="#THIS#">

    <!--- Convert CFC to JSON --->
    <cfset thisJSON = SerializeJSON(THIS)>

    <cfdump var="#DeserializeJSON(thisJSON)#">

私に次のことを与えます:

これのCFDumpおよびSerialize/DeSerializeプロセス後

赤いダンプは、controls7つのアイテムを含む配列が呼び出されたCFCを示しており、それぞれが別のより単純なCFCです。実行serializeJSONして、その結果をパスバックした後にダンプするとdeserializeJSON、項目3〜7は空の文字列になります。

JSONは次のとおりです。

{
    "MESSAGE":"",
    "CONTROLS":            
    [
        {
            "INDEX":"1.0",
            "NAME":"maxP11D",
            "SELWHERE":"",
            "DEF":"7940.0",
            "MMD":true,
            "ORDER":"7",
            "APP":"",
            "PRE":"",
            "MAXCAP":"35946.0",
            "FORMAT":"pound",
            "VALUE":"",
            "DESC":"List price exc FRF & VED",
            "MINCAP":"7939.0",
            "MINVAL":"7939.0",
            "MAXVAL":"35946.0",
            "TYPE":"range",
            "TITLE":"P11D"
        },            
        {
            "INDEX":"2.0",
            "NAME":"Y13Taxat22",
            "SELWHERE":"",
            "DEF":"0.0",
            "MMD":true,
            "ORDER":"6",
            "APP":" pa",
            "PRE":"Tax at 20%",
            "MAXCAP":"1904.1099853515625",
            "FORMAT":"pound",
            "DESC":"Personal tax rate",
            "VALUE":"",
            "MINVAL":"0",
            "MINCAP":"0.0",
            "MAXVAL":"1904.1099853515625",
            "TYPE":"range",
            "TITLE":"Company car tax"
        },
        "",
        "",
        "",
        "",
        ""
    ],
    "SELECTRESTRICT":"
        (taxtype<6)AND (t.Make=@Peugeot@)\r\nAND t.model NOT LIKE @%407%@\r\nAND
        t.model NOT LIKE @% old@\r\nAND t.model != @107 3 door@\r\nAND
        t.model != @107 5 door@\r\nORDER BY \r\nt.model = @%iOn%@ 
        DESC,\r\nt.model = @107 3 door New@ DESC,\r\nt.model = @107 5 door New@
        DESC,\r\nt.model LIKE @%207%@ DESC,\r\nt.model LIKE @%RCZ%@
        DESC,\r\nt.model LIKE @%308%@ DESC,\r\nt.model LIKE @%3008%@
        DESC,\r\nt.model LIKE @%4007%@ DESC,\r\nt.model = @508 Saloon@
        DESC,\r\nt.model = @508 SW@ DESC,\r\nt.model = @508 RXH@ 
        DESC,\r\nt.model LIKE @%5008%@ DESC,\r\nt.model LIKE @%807%@
        DESC,\r\nt.model LIKE @%Bipper%@ DESC,\r\nt.model LIKE @%Partner%@
        DESC,\r\nt.model ASC
    ",      
    "SHOWNOTES":true,
    "MYSQL": {         
        "WHERE":"",
        "COLS":"
            t.maxP11D, t.Y13Taxat22, t.Y13Taxat40, t.CO2gpkm,
            t.fuelConsumptionDf, t.bodyStyle, t.fuelType, 
        ",
        "EXCLUDE":""
    }
}

最初の2つの項目は正常に変換されますが、残りの5つの項目は文字列に変更されるのはなぜですか?

私はこのコードが以前は機能していたことを確信しています。ごく最近CF9.0.1にアップグレードしましたが、他の誰かが9.0.1のJSONで問題を抱えていましたか?

4

2 に答える 2

2

ACF 9のserializeJSONには、いくつかの大きな問題があります。累積ホットフィックス2がインストールされていることを確認してください。

http://helpx.adobe.com/coldfusion/kb/cumulative-hot-fix-2-coldfusion-1.html

正直なところ、serializeJSONはPOSです。CFJSONという古いプロジェクトを使用していますが、問題はありません。それに切り替えて、serializeJSONを忘れることをお勧めします。

http://www.epiphantastic.com/cfjson/

于 2012-05-21T20:03:06.050 に答える
1

serializeJson() を使用することに結婚していますか、それともオブジェクトをシリアル化するだけならobjectSave()の方が良い選択肢でしょうか?

于 2012-05-22T07:22:39.427 に答える