「この関数でAzure関数を作成しました。JSONを返すAPIを呼び出します。このJSONをオブジェクトに解析して関数で使用できるようにします。関数がわからないように見えるため、Newton.JSONを使用できませんこれ。どうすればJSONを解析できますか?」
Azure Functionでは、最初にNewtonSoft.JSONへの参照を追加する必要があります。これは「Newtonsoft.Json」を介して実行できます。引用符を忘れないでください!!!
あなたがnewtonsoft経由で通常のシリアル化を使用できるよりも:
var response = await client.GetAsync("<url>");
var json = await response.Content.ReadAsStringAsync();
var o= JsonConvert.DeserializeObject<"Type">(json);
JsonNetを使用してオブジェクトをシリアル化/逆シリアル化するための完全なAzure Functionソースコードを次に示します。
#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\"}"
上記の答えは、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"}