2016-06-29 8 views
7

„Ich habe eine Azure Funktion in dieser Funktion erstellen habe ich eine API aufrufen, die JSON zurückgibt. Ich möchte diese JSON zu einem Objekt analysieren, damit ich es in der Funktion verwenden können. Ich kann nicht verwenden Newton.JSON nicht die Funktion dies nicht zu wissen scheint. wie kann ich die JSON analysieren?“Wie kann ich Json in einer Azure Funktion Parse

+0

Mögliche Duplikat [Newtonsoft.Json Referenz beschwerte auf Azure Funktionen] (http : //stackoverflow.com/questions/37335321/newtonsoft-json-reference-complaining-on-azure-functions) –

+0

Json.NET * * ist mit der Azure Funktionen Umgebung hinzugefügt. Bitte posten Sie Ihren Code. Es ist unmöglich zu erraten, was ohne es falsch ist. Höchstwahrscheinlich fehlt Ihnen die Assembly-Referenz –

Antwort

0

In der Azure-Funktion Ihr erstes müssen Sie einen Verweis auf NewtonSoft.JSON hinzufügen. Sie können dies über "Newtonsoft.Json" tun. Vergiss die Zitate nicht !!!

als Sie die normale Serialisierung über newtonsoft verwenden können:

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

Dies ist die komplette Azure Funktion Quellcode für die Serialisierung/Deserialisierung Objekte mit 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; } 
} 

Probeneingang (Anforderungstext) :

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

Beispielausgabe:

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

Sie oben Antwort ist eine Zeichenfolge und nicht JSON zurück. Ich würde vorschlagen, dass Sie Ihre Antwort wie folgt ändern:

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

Dies wird die Beispielausgabe zurück, ohne die JSON entkommt:

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