我有一个模型,其中包含一个使用Microsoft.Azure.Documents.Spatial.Point类型的属性。
public class TelemetryLiveExample
{
[JsonProperty("location")]
public Point Location { get; set; }
}
我希望能够序列化&使用Newtonsoft JsonConvert反序列化消息。例如,如果我在本地序列化以下模型。
TelemetryLiveExample telemetryLive = new TelemetryLiveExample
{
Location = new Point(1, 2)
};
JsonConvert.SerializeObject(telemetryLive);
我得到以下结果,这是我期望的Microsoft.Azure.Documents.Spatial.Point有自定义转换器PositionJsonConverter
"{"location":{"type":"Point","coordinates":[1.0,2.0]}}"
如果我完全相同但首先将其发布到Azure功能,我会得到以下结果。这看起来像Azure函数中忽略了自定义转换器,但我无法弄清楚原因。
{"location":{"Position":{"Coordinates":[1.0,2.0],"Longitude":1.0,"Latitude":2.0,"Altitude":null},"Crs":{"Name":"urn:ogc:def:crs:OGC:1.3:CRS84","Type":0},"Type":0,"BoundingBox":null,"AdditionalProperties":{}}}
我想弄清楚为什么Azure Function序列化程序会忽略自定义转换器并给出不同的结果?
答案 0 :(得分:1)
我想弄清楚为什么Azure Function序列化程序会忽略自定义转换器并给出不同的结果?
根据我的测试,天蓝色功能和局部功能没有区别。我使用以下演示代码和nuget包Microsoft.Azure.DocumentDB进行测试。
public static class TestDocument
{
[FunctionName("TestDocument")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
TelemetryLiveExample telemetryLive = new TelemetryLiveExample
{
Location = new Point(1, 2)
};
var json = JsonConvert.SerializeObject(telemetryLive);
return req.CreateResponse(HttpStatusCode.OK, json);
}
}