我试图使用ServiceNow Azure data V2中的REST 连接器从表中提取数据。在提取数据时,有时会得到以下错误,有时不会收到任何错误,管道正在成功运行。
{
"errorCode": "2200",
"message": "Failure happened on 'Source' side. ErrorCode=UserErrorInvalidJsonDataFormat,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error occurred when deserializing source JSON data. Please check if the data is in valid JSON object format.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Newtonsoft.Json.JsonReaderException,Message=Invalid character after parsing property name. Expected ':' but got: ,. Path 'result', line 1, position 15740073.,Source=Newtonsoft.Json,'",
"failureType": "UserError",
"target": "REST-API-ServiceNow"
}有人能帮帮我吗?
提前感谢!
发布于 2019-11-13 02:14:24
1.反序列化源JSON数据时出错。请检查数据是否为有效的JSON对象格式。解析属性名称后的2.Message=Invalid字符。预期的“:”但得到:.。
我认为错误细节表明您的源数据不能被ADF反序列化,因为它不是标准的format.Illegal JSON数据不能通过ADF复制活动传递。
我不能在我这边重现您的问题,因为我不能接触您的源data.However,我建议您在执行复制活动之前使用WEB活动调用REST。并收集Web活动的输出(来自REST的响应),将它们存储在其他住所中。这样每次都可以检查源数据是否合法。
我的想法如下:
1.将Web活动配置为调用REST,然后可以从源数据中获得响应。

2.配置一个函数Activity来记录上述Web活动的输出。

应该将Body设置为Web:@activity('Web1').output的输出,然后将其记录到函数应用程序中。下面是一些示例函数代码:
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
namespace FunctionAppStoreCSV
{
public static class Function2
{
[FunctionName("Function2")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
log.LogInformation(requestBody);
return requestBody != null
? (ActionResult)new OkObjectResult($"Log Successfully")
: new BadRequestObjectResult("Please pass output in the request body");
}
}
}我在本地进行了测试,您可能会看到日志数据,如下所示:

如果它在门户中,您可以在KUDU url:D:\home\LogFiles\Application\Functions\function\Function2>上查看日志。

3.在您的复制活动之前,在ADF中将两者连接起来。

提示:
我的方式可以节省金钱为天蓝色的存储,我只是记录数据,以便您可以检查数据是否遵循严格的格式。当然,你可以把它们存储在blob存储器中。只需编写代码将Body数据存储到Blob存储中,就可以在Azure函数应用程序中使用。
https://stackoverflow.com/questions/58820399
复制相似问题