2016-06-29 10 views
7

"Mam utworzyć funkcję Azure w tej funkcji Wzywam API, które zwraca JSON.Chcę sparsować ten JSON do obiektu, dzięki czemu mogę go używać w funkcji. nie używaj Newton.JSON, ponieważ funkcja wydaje się o tym nie wiedzieć Jak mogę analizować JSON? "Jak mogę Parsować Json w funkcji Azure

+0

Możliwy duplikat [Newtonsoft.Json odsyłającego skargę na Azure Functions] (http : //stackoverflow.com/questions/37335321/newtonsoft-json-reference-complaining-on -azure-functions) –

+0

Json.NET * jest * dodany do środowiska Azure Functions. Proszę zaksięguj swój kod. Bez tego nie można odgadnąć, co jest nie tak. Najprawdopodobniej brakuje odniesienia do zespołu –

Odpowiedz

0

W funkcji Azure jako pierwszej należy dodać odniesienie do NewtonSoft.JSON. Możesz to zrobić za pomocą "Newtonsoft.Json". Nie zapomnij cytatów !!!

niż można normalnie korzystać z serializacji poprzez newtonsoft:

var response = await client.GetAsync("<url>"); 
var json = await response.Content.ReadAsStringAsync(); 
var o= JsonConvert.DeserializeObject<"Type">(json); 
24

Powyżej znajduje się pełna Azure kod źródłowy funkcji do szeregowania/deserializacji obiektów za pomocą 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; } 
} 

wejściowy Sample (request ciała) :

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

Przykładowa produkcja:

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

Powyższa odpowiedź zwraca ciąg znaków, a nie JSON. Proponuję, żeby zmodyfikować swoją odpowiedź następująco:

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); 
} 

ta zwróci Przykładowe wyjście bez JSON ucieka:

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