生成给定 C# 类的 XML 或 JSON

本文关键字:XML JSON 类的 | 更新日期: 2023-09-27 18:37:15

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

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

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

在SO

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

这里的特定用例是,我正在等待另一个开发人员的 JSON 输出,并想知道是否有一种方法可以快速启动,以便我可以使用此方法测试我的代码,无论此方法是什么。

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

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

生成给定 C# 类的 XML 或 JSON

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

例如,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)


作为旁注:

除非您正在做"结束 2 结束"测试......你的问题确实让我觉得也许你对另一个组件有硬编码的依赖。您应该能够测试您的代码,而无需其他组件准备就绪(特别是如果来自其他开发人员)。如果你还不熟悉它,我建议阅读Martin Fowler关于模拟的讨论,以模拟依赖组件的行为。如果您只是进行端到端测试并且了解所有有关单元测试/模拟等的信息,请忘记这一段。:-)