Json从实体返回额外的值

时间:2015-07-02 19:07:28

标签: c# json json.net

我正在使用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对象

修改

我忘了为你们提供测试数据。

  

[{&#34; $ ID&#34;:&#34; 1&#34;&#34; ID&#34;:1,&#34;的firstName&#34;:&#34;大卫&# 34;,&#34; lastName的&#34;:&#34;巴克利&#34;&#34;地址1&#34;:&#34;&#34;&#34;地址2&#34;:空, &#34;县&#34;:空,&#34;邮编&#34;:空,&#34; EMAILADDRESS&#34;:空,&#34; aboutme&#34;:空,&#34;有源&# 34;:真,&#34;的EntityKey&#34; {&#34; $ ID&#34;:&#34; 2&#34;&#34; EntitySetName&#34;:&#34;人&#34 ;,&#34; EntityContainerName&#34;:&#34; curoEntities&#34;&#34; EntityKeyValues&#34;:[{&#34;键&#34;:&#34; ID&#34;,& #34;类型&#34;:&#34; System.Int32&#34;&#34;值&#34;:&#34; 1&#34;}]}}]

Eidt 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;
}

1 个答案:

答案 0 :(得分:0)

实体键可能来自您的ORM。您使用的是Entity-Framework吗?您可以使用Ignore,也可以执行类似

的操作
var myList = _db.GetAllListsByUserId(userId).Select(x=> new SomeDto{ prop1 = x.prop1 ... }).toList(); 

public class SomeDto{
    public string prop1 {get;set;}
}

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

如果您正在使用Entity框架,那么您的db-context也可以在dbcontext设置中进行配置,这样可以转换代理创建等内容。请小心在全球范围内这样做,因为它可能会破坏您的更新跟踪。