我正在通过HttpResponseMessage response = Helper.SendRequest(...)
调用Web API,我需要将response
反序列化为CRM实体Annotation
的list
。
我们尝试过的一件事是使用ReasAsStreamAsync
:
List<Annotation> _listAnnotation = new List<Annotation>();
MemoryStream stream1 = (MemoryStream)response.Content.ReadAsStreamAsync().Result;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<Annotation>));
ser.WriteObject(stream1, _listAnnotation);
stream1.Position = 0;
List<Annotation> lst = (List<Annotation>)ser.ReadObject(stream1);
但它抛出一个异常Stream does not support writing.
我们还试用了ReadAsStringAsync
var jsonString = response.Content.ReadAsStringAsync();
jsonString.Wait();
List<Entity> model = (List<Entity>)JsonConvert.DeserializeObject<List<Entity>>(jsonString.Result);
jsonString
的值是
[{"Id":"00000000-0000-0000-0000-000000000000","LogicalName":"annotation","Attributes":[{"Key":"filename","Value":"Microsoft.SharePoint.Client.FileInformation"},{"Key":"documentbody","Value":"JVBERi0xLjUKJfv8/f4KNCAwIG9iago8PAovVGFicyAvUwovU3RydWN0UGFyZW50cyAwCi9QYXJlbnQgMyAwIFIKL1Jlc291cmNlcyA2IDAgUgo......g=="},{"Key":"mimetype","Value":"text/plain"}],"EntityState":null,"FormattedValues":[],"RelatedEntities":[]}]
但上面写着Cannot create and populate list type Microsoft.Xrm.Sdk.AttributeCollection.
我交换了Entity
和Annotation
,但没有用。
哪种方法更好,最接近我需要做的事情?请告诉我你的建议或答案。我已经被困在这里好几天了。非常感谢!
我不相信旧的"早期绑定类型"和Entity
与新的web api兼容。您可以创建自己的POCO和/或应该有生成器可以使用webapi的元数据端点为您生成类。