当前位置: 首页 > 面试题库 >

在ASP.NET MVC应用程序中为JSON输出筛选域对象的最佳方法

寿意远
2023-03-14
问题内容

如果我要在asp.net mvc中渲染常规视图,则页面中显示的唯一域对象属性就是我专门写出的属性。例如:

<div><%= Customer.FirstName %></div>

但是,如果我序列化json的域对象,它将包含所有属性。例:

public JsonResult Customer (int? id)
{
    Customer customer = _serviceLayer.GetCustomer (id.Value);

    return Json (customer);
}

由于我不希望每个Customer属性都公开,在这种情况下,最好的方法是为json过滤输出属性?您可以使用诸如UpdateModel()的包含/排除列表吗?使用代理类,例如公共类JsonCustomer?你会推荐什么?


问题答案:

我为此使用匿名类型:

var customer = from c in serviceLayer.GetCustomers()
               where c.Id == id.Value
               select new { FirstName = c.FirstName };

这不仅仅是一个好主意。相反,它可以防止在对象图包含循环引用的情况下调用Json()时出现异常。



 类似资料:
  • 问题内容: 我有一个说“销售”的对象列表。我只需要其产品与另一个列表(例如saleProductList)中的对象匹配的Sales对象。 除了循环以外,还有没有更好的方法可以做到这一点。 问题答案: 如果您已经在使用Google的Guava库,则它具有Collections2.filter()方法,该方法将仅返回集合中与给定Predicate匹配的项。 但是,这是否能回答您的问题取决于您避免循环的

  • 问题内容: 要创建一个空的JSON对象,我通常使用: 将null强制转换为对象有效,但是此解决方案是否还有其他更好的方法和/或任何问题? 问题答案: 您的解决方案可以工作。 该文档指定将导致一个空的对象,因此可能有人说您的代码有效,这是使用的方法。 PHP:对象-手册 如果将任何其他类型的值转换为对象,则将创建stdClass内置类的新实例。如果值为NULL,则新实例将为空。 ..但是,请尝试确保

  • 问题内容: 在GWT应用程序中将 大量HTML外部化 的最佳方法是什么?我们有一个相当复杂的GWT应用程序,大约有30个“页面”;每个页面的底部都有一种指南,它是HTML标记的几段。我想外部化HTML,以使其尽可能保持“未转义”状态。 我知道并了解如何在GWT中使用 属性文件 ;这肯定比将内容嵌入Java类更好,但是对于HTML来说仍然很难看(您需要对所有内容都反斜杠,以及转义引号等)。 通常,这

  • 我有一个ServerEndpoint,它将累加不同的JSON格式。由于每个消息类型只允许一个消息处理程序,因此我的一个解码器必须将消息转换为相应的Java对象。 在我的解码器中,我试图使用ObjectMapper类将累犯的消息转换为子类或子类(这会产生相同的接口)。ObjectMapper类有一个readValue方法,它需要我试图将json映射到的类型,当它不能转换为指定的类型时,它将抛出异常。

  • 问题内容: 我正在使用restTemplate向servlet发出请求,该servlet返回json中对象的非常简单的表示形式。 我有一个包含这两个字段的DTO以及相应的设置器和获取器。我想知道的是如何使用json响应创建对象,而不必“解析”响应。 问题答案: 我个人会推荐杰克逊。它相当轻巧,速度非常快,只需要很少的配置。这是反序列化的示例:

  • 我试图从json文件中获取一个对象数组,但遇到了一个问题。 我应该使用什么路径来获取项目中的所有项目(item0、item1、item2…)? 你能给我一个怎么做的建议吗。 Json 示例 从items对象中过滤item的最佳方法,但我不知道如何使用json路径。