18

「この関数で Azure 関数を作成しました。JSON を返す API を呼び出します。関数で使用できるように、この JSON をオブジェクトに解析したいのですが、関数が認識していないように見えるため、Newton.JSON を使用できません。これ。どうすれば JSON を解析できますか?」

4

4 に答える 4

44

JsonNet を使用してオブジェクトをシリアル化/逆シリアル化するための完全な Azure 関数ソース コードを次に示します。

#r "Newtonsoft.Json"

using System.Net;
using Newtonsoft.Json;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    dynamic body = await req.Content.ReadAsStringAsync();
    var e = JsonConvert.DeserializeObject<EventData>(body as string);
    return req.CreateResponse(HttpStatusCode.OK, JsonConvert.SerializeObject(e));
}

public class EventData
{
    public string Category { get; set; }
    public string Action { get; set; }
    public string Label { get; set; }
}

サンプル入力 (リクエスト本文):

{
    "Category": "Azure Functions",
    "Action": "Run",
    "Label": "Test"
}

出力例:

"{\"Category\":\"Azure Functions\",\"Action\":\"Run\",\"Label\":\"Test\"}"
于 2016-09-23T13:44:04.713 に答える
6

上記の回答は、JSON ではなく文字列を返しています。次のように回答を変更することをお勧めします。

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    dynamic body = await req.Content.ReadAsStringAsync();
    var e = JsonConvert.DeserializeObject<EventData>(body as string);
    return req.CreateResponse(HttpStatusCode.OK, e);
}

これにより、JSON エスケープなしのサンプル出力が返されます。

{"Category":"Azure Functions","Action":"Run","Label":"Test"}
于 2016-12-28T19:38:43.803 に答える