SerializeJSON(cfquery)

创建一个看起来像这样的JSON:
"COLUMNS":["POINT","LOCATION"],"DATA":[["41.322365,-71.679251","Ashaway...

如何仅输出JSON数据?

即...
[["41.322365,-71.679251","Ashaway...

最佳答案

我认为除非您可以修改正在序列化查询的代码,否则没有简便的方法来执行此操作。否则,您将需要使用一些字符串操作。但是,假设您可以访问正在序列化查询的CF代码,则这有点不合常规,但确实可以:

<!---Serialize and Deserialize the cfquery to shortcut obtaining a Structure--->
<cfset queryAsStruct = DeSerializeJSON(SerializeJSON(cfquery))>
<!---Now serialize the data key of the struct--->
<cfset dataJSON = SerializeJSON(queryAsStruct.data)>

正如我说的,也许不是最漂亮的……但似乎可以完成它。可能有一种更方便/更好的实践方法将cfquery转换为结构,但这对我来说导致最少的代码行。

编辑:只是想解释为什么这行得通。由ColdFusion反序列化时的JSON字符串不再被检测为查询对象,而只是一个普通结构,因此将创建并填充“DATA”键。通过这种方式,您可以将其作为结构的键进行访问。当cfquery是查询对象时,尽管它仍然是“结构”类型的对象,但它有一些特殊的注意事项,它们会阻止您直接访问数据键(据我所知)。

10-04 15:49