Как я могу распарсить JSON в функцию Лазурное
" я создал функцию Azure в этой функции я вызываю API, который возвращает JSON. Я хочу разобрать этот JSON на объект, чтобы использовать его в функции. Я не могу не использовать Ньютона.JSON как функция, похоже, не знает этого.
Как я могу разобрать JSON?"
3 ответов:
В функции Azure сначала нужно добавить ссылку на NewtonSoft.формат JSON. Вы можете сделать это через "Newtonsoft.формат JSON". Не забывайте о цитатах!!!
Чем можно воспользоваться обычной сериализацией через newtonsoft:
var response = await client.GetAsync("<url>"); var json = await response.Content.ReadAsStringAsync(); var o= JsonConvert.DeserializeObject<"Type">(json);
Вот полный исходный код функции Azure для сериализации / десериализации объектов с помощью JsonNet:
#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"}
Comments