我有一个从JSON输入字符串创建的模型。但是,其中一个名为PortfolioHolding的类没有我希望在最终结果中返回的字段。我目前的解决方案是在现有的Model类中添加该字段。但是,当我调试时,它失败了bc JSON输入字符串不正确。我尝试将[JsonIgnore]添加到我希望在反序列化期间忽略的字段中,但这也无济于事。
如何根据我的JSON输入文件动态地向我的类添加属性并使输入正确?
public class PortfolioHolding
{
public string fundIdentifier { get; set; }
public int fundRating { get; set; }
public double fundExpenseRatio { get; set; }
public double fundWeight { get; set; }
[JsonIgnore]
public double fundAlpha { get; set; } //MODIFIED by adding fundAlpha attribute
}
实际模型不包括fundAlpha,我的测试在调试期间通过。
答案 0 :(得分:2)
我很抱歉我之前提供的解决方案。
我理解的是,您希望使用相同的模型类从JSON获取输入并将该模型返回到项目的某个位置。
可以有两种可能的解决方案。
1)在场景中,您正在从同一个库或命名空间中的数据库(它可以是文件)中读取数据(JSON),您可以使用internal
关键字。在同一个命名空间内,您将可以访问该属性,并且不会访问命名空间。
2)您可以从结果集中选择匿名对象,如
resultSet.Select(a => new { a.col1, a.col2, a.col3, /*and skip the one which you don't want to be selected*/})
答案 1 :(得分:1)
您可以从mergeInto
创建匿名类型并将其序列化:
PortfolioHolding
答案 2 :(得分:0)
表示一个对象,其成员可以在运行时动态添加和删除。
dynamic expando = new ExpandoObject();
expando.Prop1= 1;
expando.Prop2 = "Test";
反序列化时使用列表:
var exConverter = new ExpandoObjectConverter();
dynamic obj = JsonConvert.DeserializeObject<List<ExpandoObject>>(json, exConverter);