给定C#类生成XML或JSON

时间:2016-03-03 14:12:27

标签: c# json xml serialization

希望这不会违反"推荐或找到工具,库或最喜欢的场外资源"偏离主题的规则,但无论如何都要进行。

如果您进行数据库开发,那么您可能熟悉那些将样本数据放入表中以便进行测试的工具。

我想知道是否有任何方式[0]可以将标记为Serializable的模型类生成,并从使用适当属性修饰的属性生成示例XML或JSON。

在SO和其他地方有很多关于从JSON或XML生成C#类的问题,但我想要的却略有不同。

这里的具体用例是我正在等待来自另一个开发人员的JSON输出,并想知道是否有一种方法我可以获得一个快速启动所以我可以使用这种方法测试我的代码,无论这种方法如何可能是。

我只是使用标准的XML序列化程序和JSON.NET库,但如果需要可以切换到其他内容。

[0] 我知道我可以编写可以使用Reflection实例化类的代码,然后反映到该实例并以这种方式编写XML或JSON,但这本身就是一个大项目。我希望在.NET Framework中使用预先存在的方式或某种FOSS工具

1 个答案:

答案 0 :(得分:2)

你可以使用一些单元测试工具来帮助你。

例如nBuilder可以使用示例数据填充属性,然后将其序列化为json。

void Main()
{
    var samplePerson = Builder<Person>.CreateNew().Build();

    var json = JsonConvert.SerializeObject(samplePerson);

    //outputs {"Name":"Name1","Age":1} to the screen
    json.Dump();
}

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

这是linqpad代码: http://share.linqpad.net/prur3p.linq

然而,这显然不会使用您的属性属性来提供帮助。

更详细的例子:

var hierarchySpec = Builder<HierarchySpec<Category>>.CreateNew()
                .With(x => x.AddMethod = (parent, child) => parent.AddChild(child))
                .With(x => x.Depth = 5)
                .With(x => x.MaximumChildren = 10)
                .With(x => x.MinimumChildren = 5)
                .With(x => x.NamingMethod = (cat, title) => cat.Title = "Category " + title)
                .With(x => x.NumberOfRoots = 10).Build();

            Builder<Category>.CreateListOfSize(2500).BuildHierarchy(hierarchySpec);

https://github.com/garethdown44/nbuilder/#hierarchy-generation

作为旁注:

除非你正在做&#34;结束2结束&#34;测试...你的问题确实让我觉得你可能对另一个组件有一个硬编码依赖。您应该能够测试代码而无需准备其他组件(特别是如果来自其他开发人员)。如果您还不熟悉它,我建议您阅读martin fowler's discussion about mocks来模拟相关组件的行为。如果您只是进行端到端测试并了解有关单元测试/模拟等的所有信息,请忘记这一段。 : - )