Json返回实体中的额外值

本文关键字:返回 实体 Json | 更新日期: 2023-09-27 18:00:49

我正在使用json.net来序列化一个泛型列表,但当我只需要字段名和值时,它会在json中带回额外的数据。我尝试使用下面的JSONConvert简单语法,但我认为我必须根据myList返回的值创建一个新的结果var。

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":":"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;
}

Json返回实体中的额外值

实体键可能来自ORM。您正在使用实体框架吗?您可以使用Ignore,也可以执行类似的操作

var myList = _db.GetAllListsByUserId(userId).Select(x=> new SomeDto{ prop1 = x.prop1 ... }).toList(); 
public class SomeDto{
    public string prop1 {get;set;}
}

这将为您提供一个只包含您定义的内容的List对象,只要您不希望整个结果集都在其中,它也会使查询更快。

如果您使用的是Entity框架,那么您的数据库上下文也可以在数据库上下文设置中进行配置,在那里可以进行代理创建等操作。在全球范围内这样做要小心,因为这可能会打乱你的更新跟踪。