2016-06-29 18 views
7

"Bu işlevin bir Azure İşlevi oluşturduğumda JSON'u döndüren bir API çağırıyorum. Bu JSON'u bir nesneye ayrıştırmak istiyorum, böylece bunu işlevde kullanabiliyorum. işlevi görmediği için Newton.JSON kullanılmaz. JSON'u nasıl ayrıştırırım? "Json'u Azure İşlevinde Nasıl Ayırabilirim

+0

Tekrarlama olabilir http: JSON kaçar olmadan

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

Bu örnek çıktıyı döndürür: Ben şöyle Cevabınızı değiştirmek öneririm : //stackoverflow.com/questions/37335321/newtonsoft-json-reference-complaining-on-azure-functions) –

+0

Json.NET *, Azure İşlevleri ortamına eklenmiştir. Lütfen kodunuzu gönderin. Onsuz neyin yanlış olduğunu tahmin etmek imkansız. Büyük olasılıkla, derleme başvurusunu kaçırıyorsunuz –

cevap

0

Azure İşlevinde ilk olarak, NewtonSoft.JSON'a bir başvuru eklemeniz gerekir. Bunu "Newtonsoft.Json" ile yapabilirsiniz. Alıntıları unutma! Eğer newtonsoft yoluyla normal bir seri kullanabilirsiniz Daha

: Burada

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

JsonNet/seri hale kullanarak nesneleri deserializing için tam bir Azure Fonksiyon kaynak kodu:

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

Numune girişi (istek gövdesi) :

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

Örnek çıktı:

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

Yukarıdaki yanıt, JSON değil, bir dize döndürüyor.

{"Category":"Azure Functions","Action":"Run","Label":"Test"} 
[Azure Fonksiyonları Üzerine şikayetçi Newtonsoft.Json referans] (içinde