函数应用程序在Visual Studio中运行良好,但是发布后,当我从逻辑应用程序调用函数时,它将引发错误

时间:2019-12-19 11:34:38

标签: json azure-function-app

我的场景:将JSON数据传递给函数应用程序以执行一些业务功能,例如将输入的JSON转换为正确的格式,为此,我使用了foreach循环并创建了json字符串。

abopve场景在本地VS2017中按预期方式工作,但是在发布之后以及从逻辑应用程序调用时会引发错误。

要进行手动检查,我将整个代码复制到了功能应用程序(Azure门户)中,并在我调用功能应用程序时进行了检查,它显示了一些与JSON相关的错误。

  1. 使用无效键值访问的JObject值:0。对象属性名称应为{。{1}}

然后我在另一个data[0].columns.Count的顶部添加了另一个foreach,并尝试将其计为foreach

  1. 无法访问totalData["columns"].Count上的子值。 (当我将Newtonsoft.Json.Linq.JProperty放置到data[0].columns.Count时)

请您帮我一下,功能应用程序如何提供与VS2017输出相同的输出。或在功能应用中使用json。

enter image description here

1 个答案:

答案 0 :(得分:0)

因为您说过您在门户网站中遇到错误,然后将代码发布为本地函数。所以我写了一个简单的代码来从请求中读取json数据。而且您没有提到json模式,因此以下是我的测试json数据和CSX代码。

[
    {"columns":{
    "count":1
},
"rows":[1,2]},
{"columns":{
    "count":2
},
"rows":[3,4]}]

function.csx:

using System.Net;

public static async Task Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    // Get request body
        dynamic data = await req.Content.ReadAsAsync<object>();

    int count = data[1].columns.count;
    int row = data[1].rows[0];

    log.Info("colums: "+count.ToString()+" row:"+row);
}

这是结果图片:

enter image description here

如果此json数据不是您想要的,或者您还有其他问题,请随时让我知道或提供更多详细信息。