繁体   English   中英

给定C#类生成XML或JSON

[英]Generate XML or JSON given a C# class

希望这不会违背“推荐或找到工具,库或喜欢的非现场资源”主题规则,但无论如何这里都是可行的。

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

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

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

这里的特定用例是,我正在等待其他开发人员的JSON输出,并且想知道是否有一种方法可以使我快速入门,因此无论使用哪种方法,都可以使用此方法测试我的代码。

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

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

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

例如, 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的关于使用模拟来模拟相关组件行为的讨论 如果您只是在进行端到端测试,并且对单元测试/模拟等一无所知,那么请忽略本段。 :-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM