如何在coldfusion中生成未格式化的json

如何在coldfusion中生成未格式化的json,json,coldfusion,cfml,Json,Coldfusion,Cfml,我有一个JSON示例: ["12086012800", ["XXX3220210230310", "XXX3220210260120", "XXX3220210170580", "XXX3220210170220", "XXX3220210270310", "XXX3220210080320", "XXX3220210110020", "XXX3220210220530", "XXX3220210020480", "XXX3220210170210", "XXX3220210230160", "

我有一个JSON示例:

["12086012800", ["XXX3220210230310", "XXX3220210260120", "XXX3220210170580", "XXX3220210170220", "XXX3220210270310", "XXX3220210080320", "XXX3220210110020", "XXX3220210220530", "XXX3220210020480", "XXX3220210170210", "XXX3220210230160", "XXX3220210060020", "XXX3220210220160", "XXX3220210110130", "XXX3220210021300", "XXX3220210260220", "XXX3220210260590", "XXX3220210210080", "XXX3220210020740", "XXX3220210020780", "XXX3220210270020", "XXX3220210260020", "XXX3220210230290", "XXX3220210260110", "XXX3220210080080", "XXX3220210110010", "XXX3220210220280", "XXX3220210230280", "XXX3220210021040", "XXX3220210220490", "XXX3220210220170", "XXX3220210230530", "XXX3220210020750", "XXX3220210060280", "XXX3220210230790", "XXX3220210230480", "XXX3220210220460", "XXX3220210260010"],
    [{
        "lat": 25.91026573627833,
        "lng": -80.34233093261719
    }, {
        "lat": 25.909648111101557,
        "lng": -80.34602165222168
    }, {
        "lat": 25.905015819188293,
        "lng": -80.34499168395996
    }, {
        "lat": 25.904243752850498,
        "lng": -80.34310340881348
    }, {
        "lat": 25.906714347345247,
        "lng": -80.34147262573242
    }, {
        "lat": 25.90972531442551,
        "lng": -80.34233093261719
    }]
]
它通过$.ajax调用进入cfm页面:

var save = {
    poly: function() {
        var value = [];
        value.push(GEOID);
        value.push($.map(selected, function(el) { return el; }));
        value.push(getpaths(poly));
        console.log(JSON.stringify(value));

        $.ajax({
            type: "POST",
            url: 'data/geoselect_insert.cfm',
            contentType: "application/json; charset=utf-8",
            data: JSON.stringify(value),
            async: false,
            dataType: "json",
            success: function (location) {
                console.log("saved");
            }
        });
    }
}
我需要使用的cfm页面类似于以下内容:

<cfsetting showdebugoutput="yes">
<cfheader name="Content-Type" value="application/json">
<CFPARAM name="cookie.UserID" default="0">
<CFPARAM name="PropertySearchID" default="0">

<cfset ParcelJSON = toString( getHttpRequestData().content ) /> 

<!--- Double-check to make sure it's a JSON value. --->
<cfif isJSON( ParcelJSON )>


<cfset ParcelJSON2 = DeserializeJSON(ParcelJSON, true) >
<cfoutput>#ParcelJSON2[0]#</cfoutput>


</cfif>
我假设ParcelJSON2是ParcelJSON的某种形式的突破。 我需要将JSON拆分为三个变量

<cfset Variable1 = (insert wisdom here) >  <--"12086012800",
<cfset Variable2 = (insert wisdom here) >  <--["XXX3220210230310","X...]
<cfset Variable3 = (insert wisdom here) >  <--["lat":"23.9999"......]
我想执行一个cfquery插入,将这些值放入。 如何在不中断子JSON的情况下中断传入JSON。每个子JSON都是它们自己的值


在您反序列化json之后,任何智慧都会得到极大的赞赏,因为它只是数组和结构的组合。在您的例子中,是一个复杂对象的数组

因此,如果您收到的JSON总是采用相同的格式

我注意到,在您的示例中,您使用零来引用CFML数组中的第一个元素,这与几乎所有其他语言不同

比如:

<cfset Variable1 = ParcelJSON2[1]>  <--"12086012800", 
<cfset Variable2 = ParcelJSON2[2] >  <--["XXX3220210230310","X...]
<cfset Variable3 = ParcelJSON2[3] >  <--["lat":"23.9999"......]

在这种情况下,我常常在可视化数据中找到安慰。多亏了ColdFusion,它很简单。在调用反序列化JSON之后,直接转储数据以便查看

<cfdump var="#ParcelJSON2#">
此时,您将看到一个格式良好的ColdFusion转储数据,您可以根据需要获取、输出和操作这些数据

<cfset Variable1 = ParcelJSON[1] />
<cfset Variable2 = ParcelJSON[2] />
<cfset Variable3 = ParcelJSON[3] />
如果您需要从CF变量中获取JSON,您可以反转部分过程

<cfset Variable1 = serializeJSON(ParcelJSON[1]) />
<cfset Variable2 = serializeJSON(ParcelJSON[2]) />
<cfset Variable3 = serializeJSON(ParcelJSON[3]) />
最后,要查看它是否按您希望的方式工作,请再次尝试转储:

<cfdump var="#variables#">

首先,我假设ParcelJSON2是ParcelJSON的一种突破。不要假设:找出答案。第二:你的代码在哪里显示了你的尝试。除了示例JSON之外,您发布的所有代码都与您的问题无关。您可能会从阅读以下内容中受益:这是:对ParcelJSON2进行一次分析,而不仅仅是对ParcelJSON2[0]进行一次分析,以了解它的外观。这实际上非常有效。非常感谢你。