我正在使用 json .net 对通用列表进行序列化,但是当我只需要我的字段名称和值时,它会在我的 json 响应中带回额外的数据。我尝试使用下面的 JSONConvert 简单语法,但我想我将不得不根据从 myList 返回的值创建一个新的结果变量。
public string GetListByUserId(int userId)
{
List<curoList> myList = _db.GetAllListsByUserId(userId);
var json = JsonConvert.SerializeObject(myList);
return json;
}
在数据中,它包括 EntitySetName 之类的东西,而我只是希望字段类似于 fieldname:fieldvalue,这引出了我对 json.net 的第二个问题,如何将数据转换为 List 对象
编辑
我忘了包含你们的测试数据。
[{"$id":"1","id":1,"firstName":"David","lastName":"Buckley","address1":"","address2":null,"county":null,"postcode":null,"emailaddress":null,"aboutme":null,"active":true,"EntityKey":{"$id":"2","EntitySetName":"persons","EntityContainerName":"curoEntities","EntityKeyValues":[{"Key":"id","Type":"System.Int32","Value":"1"}]}}]
开始 2 这是为了展示我是如何创建我的数据的
public List<person> GetPersonByIdDal(int personId)
{
List<person> list = new List<person>();
try
{
list = (from myPersons in curoEntities.persons where myPersons.id == personId && myPersons.active==true select myPersons).ToList();
}
catch (Exception ex)
{
throw new EntityContextException("GetPersonById where active = true failed.", ex);
}
return list;
}
最佳答案
实体键可能来自您的 ORM。你在使用 Entity Framework 吗?您可以使用忽略,也可以执行类似
的操作var myList = _db.GetAllListsByUserId(userId).Select(x=> new SomeDto{ prop1 = x.prop1 ... }).toList();
public class SomeDto{
public string prop1 {get;set;}
}
这将为您提供一个仅包含您定义的内容的 List 对象,只要您不希望整个结果集都在其中,它也会使查询更快。
如果您使用的是 Entity Framework ,您的数据库上下文也可以在数据库上下文设置中进行配置,其中可以关闭诸如代理创建之类的东西。在全局范围内这样做要小心,因为它可能会扰乱您的更新跟踪。
关于c# - Json 从实体返回额外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31192689/