1

我正在开发一个 C# 程序,该程序从 ServiceNow 数据库中检索数据并将该数据转换为 C# .NET 对象。我正在使用 JSON Web 服务以 JSON 格式返回我的数据。

我想要实现的目标如下:如果值之间存在关系映射(例如:我有一个名为 Company 的表,其中 CEO 不是 TEXT 字段而是 sys_id 到 Employee 表)我希望能够不使用 sys_id 输出该数据(或仅使用 'displayvariable' 参数显示名称属性),而是使用 JSON 中显示的对象。

这意味着属性的值应该是 JSON 中的对象,而不仅仅是单个值。

几个例子:

// I don't want the JSON like this
{"Company":{"CEO":"b181e841c9212c008aeb36850331fab2"}}

// Or by displaying the name of the sys_id table
{"Company":{"CEO":"James Henderson" }}

// I want the data as follows, so I can have all the data I need inside a single JSON record.
{"Company":{"CEO":{"name":"James Henderson", "age":34, "sex":"male", "office":"SBN Left Floor 23"}}}

通过阅读文档,我在 JSON Web 服务中找不到任何可以显示此类信息的内容,也找不到任何其他替代方法。它应该与加入表格并以正确的格式显示所有内容有关。

4

1 回答 1

2

我已经使用 SNC 快三年了,还没有发现您可以在 Web 服务中自动加入表格。您最好的选择是使用可能需要查询参数和表参数的脚本化 Web 服务。然后,您可以按照您认为合适的方式对结果进行 json 序列化。

或者,另一种选择是生成一个将遍历 GlideRecord 对象的新处理器。您传递给 URL 的 ?JSON 参数只是一个标志,用于将您的请求传递给特定的处理器。不幸的是,我认为 OOB 是一个 Java 类而不是 JS 脚本,因此您需要像我之前提到的那样编写一个脚本来遍历将对象图序列化到尽可能远的对象路径。

于 2012-12-16T23:12:12.660 回答