Sam*_*Sam 2 c# asp.net-mvc serialization json azure-cosmosdb
我有一个简单的 POCO 对象,如下所示:
public class Person
{
public int PersonId {get; set;}
public string FirstName {get; set;}
public string MiddleName {get; set;}
public string LastName {get; set;}
public char Gender {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
我有以下代码查询我的 DocumentDb 数据库中的 People 集合。
private async static Task<List<Person>> GetPeopleList(string colSelfLink)
{
dynamic doc = client.CreateDocumentQuery<Document>(colSelfLink, "SELECT p.PersonId, p.FirstName, p.MiddleName, p.LastName, p.Gender FROM People p").AsEnumerable().FirstOrDefault();
List<Person> peopleList = new List<Person>();
if (doc != null)
{
peopleList = doc;
}
return peopleList;
}
Run Code Online (Sandbox Code Playgroud)
当我运行此代码时,出现以下错误:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型“System.Collections.Generic.List`1[MyApp.Person]”,因为该类型需要一个 JSON 数组(例如 [1,2, 3]) 正确反序列化。要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型)可以从 JSON 对象反序列化的数组或列表)。还可以将 JsonObjectAttribute 添加到类型以强制它从 JSON 对象反序列化。路径“PersonId”,第 1 行,位置 48。
如何将来自我的查询的 JSON 对象转换为 Person 对象?在我的 MVC 应用程序中,模型绑定器做得很好,但它在单独的类库中运行。我应该如何转换这个 JSON 对象?
这就是我所做的并且有效。如果有更好的方法,我会很感激其他答案。
private async static Task<List<Person>> GetPeopleList(string colSelfLink)
{
dynamic doc = client.CreateDocumentQuery<Document>(colSelfLink, "SELECT p.PersonId, p.FirstName, p.MiddleName, p.LastName, p.Gender FROM People p").AsEnumerable().ToList();
List<Person> peopleList = new List<Person>();
if (doc != null)
{
Person person;
foreach(var item in doc)
{
person = JsonConvert.DeserializeObject<Person>(item.ToString());
peopleList.Add(person);
}
}
return peopleList;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9722 次 |
最近记录: |