簡體   English   中英

將JSON對象與webjobs SDK和Azure隊列一起使用

[英]use a JSON object with a webjobs SDK and Azure queue

只需構建一個示例應用程序即可嘗試解決問題。

我有一個名為messageClass的類:

namespace WebJobsSDKSample
{
    public class messageClass
    {
        string name { get; set; }
        string path { get; set; }
    }
}

和一個功能:

namespace WebJobsSDKSample
{
    public class Functions
    {

        public static void ProcessQueueMessage([QueueTrigger("queue")] string message)
        {

            messageClass mess = JsonConvert.DeserializeObject<messageClass>(message);

        }
    }
}

該程序設置如下:

namespace WebJobSDK
{
    class Program
    {
        static void Main(string[] args)
        {
            var config = new JobHostConfiguration();

                config.UseDevelopmentSettings();
            if (config.IsDevelopment)
            {
            }

            config.DashboardConnectionString = "";

            var loggerFactory = new LoggerFactory();

            config.LoggerFactory = loggerFactory
                .AddConsole();

            var host = new JobHost(config);

            host.RunAndBlock();

        }
    }
}

現在,當我運行它時,它可以工作,並且如果將消息放入隊列中,它將被拾起。 但是它並未被視為JSON對象。 如果我將此作為消息輸入:

{“路徑”:“此處的路徑”,“名稱”:“此處的名稱”}

那么path和name的兩個字段都為空。 這是字符串消息在調試器中的函數中顯示的內容:“ {\\” path \\“:\\” path here \\“,\\” name \\“:\\” name here \\“}”

我嘗試將message設置為messageClass或Object的類型,而不是字符串。

使用Newtonsoft.Json;

謝謝,

您在pathname屬性上沒有任何訪問修飾符,因此默認情況下它們是私有的(而忽略類的訪問修飾符會使它成為內部的)。 因此,盡管您可以在調試時看到這些值,但JsonConvert無法並且因此無法在這些屬性上設置值。

在屬性中添加公共訪問修飾符,您應該會很好。

public class messageClass
{
    public string name { get; set; }
    public string path { get; set; }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM