如何在 coldfusion 中分解未格式化的 json
how to break out a unformatted json in coldfusion
我有一块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。每个 Child JSON 都是他们自己的价值。
任何智慧将不胜感激
在反序列化 json 之后,它只是数组和结构的组合。在您的例子中,是一组复杂的对象。
因此,如果您收到的 JSON 始终采用相同的格式。
我注意到在您的示例中您使用零来引用从一开始的 CFML 数组中的第一个元素(与几乎所有其他语言不同)。
所以是这样的:
<cfset Variable1 = ParcelJSON2[1]> <--"12086012800",
<cfset Variable2 = ParcelJSON2[2] > <--["XXX3220210230310","X...]
<cfset Variable3 = ParcelJSON2[3] > <--["lat":"23.9999"......]
通常在这种情况下,我会在可视化数据时找到安慰。感谢 ColdFusion,这很简单。在您调用 DeserializeJSON
后直接转储数据以便您可以看到它。
<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#">
我有一块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。每个 Child JSON 都是他们自己的价值。
任何智慧将不胜感激
在反序列化 json 之后,它只是数组和结构的组合。在您的例子中,是一组复杂的对象。
因此,如果您收到的 JSON 始终采用相同的格式。
我注意到在您的示例中您使用零来引用从一开始的 CFML 数组中的第一个元素(与几乎所有其他语言不同)。
所以是这样的:
<cfset Variable1 = ParcelJSON2[1]> <--"12086012800",
<cfset Variable2 = ParcelJSON2[2] > <--["XXX3220210230310","X...]
<cfset Variable3 = ParcelJSON2[3] > <--["lat":"23.9999"......]
通常在这种情况下,我会在可视化数据时找到安慰。感谢 ColdFusion,这很简单。在您调用 DeserializeJSON
后直接转储数据以便您可以看到它。
<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#">