将名称值对转换为结构
Convert name value pairs to struct
自从我编写此类 ColdFusion 代码以来已经有一段时间了,因此提出了这个问题。
我正在将值从 .NET 网络服务返回到 ColdFusion。 Web 服务 returns 一个字符串数组。以下代码...
<cfoutput>
<cfset xArrayItems=#GetRequestedUserSettings.settingValues.getString()#>
<cfset xLen=ArrayLen(GetRequestedUserSettings.settingValues.getString())>
<cfloop index="x" from=1 to="#xLen#">
#xArrayItems[x]#<br />
</cfloop>
</cfoutput>
产生以下输出...
maxsize=50
isdomainadmin=False
seenwelcome=False
我想将那些 name/value 对放入一个有意义的结构中,以便我可以在代码的更下方引用它们。实际上,我需要将它们作为 cfinvokearguments 传递给下一个 Web 服务调用。
有人可以提醒我如何在 CF8 中执行此操作吗?我发现的大部分内容都涉及较新的版本。
我最终得到的结果与@Henry 你提供的非常相似。
<cfset UserSettings = structNew()>
<cfset xArrayItems= GetRequestedUserSettings.settingValues.getString()>
<cfset xLen=ArrayLen(GetRequestedUserSettings.settingValues.getString())>
<cfloop index="x" from=1 to="#xLen#">
<cfset varName = ListGetAt(xArrayItems[x], 1, "=")>
<cfset varValue = ListGetAt(xArrayItems[x], 2, "=")>
<cfset "UserSettings.#varname#" = varValue>
</cfloop>
不确定 Array 或 Struct 哪个是更好的解决方案,但两者最终都有效。
我想出的可读性更高的版本适用于 CF8:
<cfset UserSettings = {}>
<cfset xArrayItems = GetRequestedUserSettings.settingValues.getString()>
<cfloop array="#xArrayItems#" index="item">
<cfset varname = ListFirst(item, "=")>
<cfset varvalue = ListRest(item, "=")>
<cfset UserSettings[varname] = varvalue>
</cfloop>
自从我编写此类 ColdFusion 代码以来已经有一段时间了,因此提出了这个问题。
我正在将值从 .NET 网络服务返回到 ColdFusion。 Web 服务 returns 一个字符串数组。以下代码...
<cfoutput>
<cfset xArrayItems=#GetRequestedUserSettings.settingValues.getString()#>
<cfset xLen=ArrayLen(GetRequestedUserSettings.settingValues.getString())>
<cfloop index="x" from=1 to="#xLen#">
#xArrayItems[x]#<br />
</cfloop>
</cfoutput>
产生以下输出...
maxsize=50
isdomainadmin=False
seenwelcome=False
我想将那些 name/value 对放入一个有意义的结构中,以便我可以在代码的更下方引用它们。实际上,我需要将它们作为 cfinvokearguments 传递给下一个 Web 服务调用。
有人可以提醒我如何在 CF8 中执行此操作吗?我发现的大部分内容都涉及较新的版本。
我最终得到的结果与@Henry 你提供的非常相似。
<cfset UserSettings = structNew()>
<cfset xArrayItems= GetRequestedUserSettings.settingValues.getString()>
<cfset xLen=ArrayLen(GetRequestedUserSettings.settingValues.getString())>
<cfloop index="x" from=1 to="#xLen#">
<cfset varName = ListGetAt(xArrayItems[x], 1, "=")>
<cfset varValue = ListGetAt(xArrayItems[x], 2, "=")>
<cfset "UserSettings.#varname#" = varValue>
</cfloop>
不确定 Array 或 Struct 哪个是更好的解决方案,但两者最终都有效。
我想出的可读性更高的版本适用于 CF8:
<cfset UserSettings = {}>
<cfset xArrayItems = GetRequestedUserSettings.settingValues.getString()>
<cfloop array="#xArrayItems#" index="item">
<cfset varname = ListFirst(item, "=")>
<cfset varvalue = ListRest(item, "=")>
<cfset UserSettings[varname] = varvalue>
</cfloop>