coldfusion - REST GET 函数 - 将结构作为 JSON 返回

标签 coldfusion coldfusion-10

我绝对是 Coldfusion 的新手(到目前为止只有 1 天),我必须为了工作而学习它。我有 .NET 背景,所以我想弄明白这一切。

我本质上只想读取 XML 文件,并将其作为 JSON 返回。简单。

XML 文件结构:

<countries>
    <country code="AU" name="Australia" />
    <country code="NZ" name="New Zealand" />
    <country code="US" name="United States" />
    <country code="UK" name="United Kingdom" />
</countries>

我创建了一个 REST 服务,我正在使用 CFC 使用 cfscript。代码:

component restpath="locations" rest="true"
{
    remote Array function getCountries() httpmethod="GET"
    {
        response = [];
        xCountries = xmlParse(expandPath("/data/countries.xml"));
        numItems = ArrayLen(xCountries.countries.XmlChildren);

        for (i = 1; i LTE numItems; i++) 
        {
            sCountries = StructNew();
            sCountries.code = xCountries.countries.country[i].XmlAttributes.code;
            sCountries.name = xCountries.countries.country[i].XmlAttributes.name;
            arrayAppend(response, sCountries);
        }

        return response;
    }
}

使用这种技术,我在测试中获得了正确的响应,但我有一种奇怪的感觉,它可能效率低下。我只是在想创建一个新结构并将其添加到一个循环中的数组(完整的 xml 文件大约有 100 个项目)可能很笨重。

事实上,我不确定使用结构是否是执行此操作的最佳方式。在 .NET 中,我创建了一个类,然后向它的属性添加内容。我去寻找类似于类的东西,我遇到了一些东西,我创建了一个 Countries.cfc 文件:

component accessors="true" output="false"
{
    property name="code" type="string";
    property name="name" type="string";
}

我遇到的唯一问题是我不知道如何使用它。您是否将这样的组件用于 OOP?还是上面的“struct”方法更好?

长话短说;以上是实现此目标的最佳方法吗? ColdFusion 中有针对这些内容的最佳实践吗?

欢迎任何其他指示或建议。谢谢

最佳答案

IMO,您采用的方法没有任何问题。任何 CF 开发人员都会熟悉它。 CF 中没有原生的 XML -> 对象映射技术(如 Java 中的 JAXB 或 .NET 中的 XML 序列化或数据绑定(bind)),因此无论您做什么,您最终都会在代码中的某处出现读取循环。 根据您希望国家代码列表更改的频率,您可以缓存要在应用程序范围内返回的结构,这意味着您只需解析 XML 一次。

在回答结构/对象问题时,两者都可以。从历史上看,对象实例化在 CF 中非常昂贵,因此结构方法通常受到青睐。速度差异现在不那么明显了,所以两者都有效。

我个人选择对象/结构的标准是我是否需要在多个地方使用数据。如果它是我要在整个应用程序中使用并可能更新的东西,那么定义一个对象是值得的。如果我只是提供特定功能独有的只读数据,那么定义对象就像开销一样。

关于coldfusion - REST GET 函数 - 将结构作为 JSON 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17399573/

相关文章:

oracle - 在 Oracle SQL Insert 语句中返回自动增量值?

html - 在 ColdFusion 中,如何将填充有包含 HTML 内容的 SQL 查询数据的 XML 文档对象输出到 XML 文件?

arrays - 循环结构数组并输出特定的结构值?

coldfusion - ColdFusion10 的导入证书

sql - 在事务中使用@@IDENTITY 是否安全?

ListAppend() 不起作用?

xml - 如何在 Coldfusion 中将数组添加到 XML 对象?

coldfusion - 正确标记但面临错误 : The start tag must have a matching end tag

replace - ColdFusion EncodeForHTML 和换行符

json - 如何CFDUMP HTTP POST的 "Body"