将名称值对转换为结构

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>