我想返回一个国家列表,作为我在loopback.js框架上构建的XML API的一部分。我正在构建一个国家/地区对象数组,然后将其分配给响应对象
var regions=[];
for (var index in data.regions)
{
var country=data.regions[index];
regions.push({country:{
code:country.code,
name:country.name
}
});
}
result.restricted_countries=regions;
当我转储结果时,数组看起来很好
[ { country: { code: 'AE', name: 'United Arab Emirates' } },
{ country: { code: 'AF', name: 'Afghanistan' } } ]
然而,当我将结果呈现为XML时,每个国家/地区都被包含在其自己的restricted_country节点中
<restricted_countries>
<country>
<code>AE</code>
<name>United Arab Emirates</name>
</country>
</restricted_countries>
<restricted_countries>
<country>
<code>AF</code>
<name>Afghanistan</name>
</country>
</restricted_countries>
显然我预计它会
<restricted_countries>
<country>
<code>AE</code>
<name>United Arab Emirates</name>
</country>
<country>
<code>AF</code>
<name>Afghanistan</name>
</country>
</restricted_countries>
当我将响应类型更改为JSON时,它按预期工作。
我使用loopback的默认XML渲染器,只需在配置中设置"rest": {"xml": true}
即可。我不确定它在内部使用哪个库,以及是否可以以某种方式配置它。
答案 0 :(得分:1)
摆脱像
这样的区域数组中的包装country
键
regions.push({
code:country.code,
name:country.name
});
并将其添加为结果
的基础result.restricted_countries={country:regions};
这使得一个不太合乎逻辑的JS对象,但呈现了一个预期的XML。我不确定我是修复了这个bug还是引入了另一个但仍然是..