Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在给定C#类的情况下生成XML或JSON_C#_Json_Xml_Serialization - Fatal编程技术网

在给定C#类的情况下生成XML或JSON

在给定C#类的情况下生成XML或JSON,c#,json,xml,serialization,C#,Json,Xml,Serialization,希望这不会违反“推荐或查找工具、库或最喜爱的非网站资源”的非主题规则,但无论如何还是要这样做 如果您进行数据库开发,那么您可能会熟悉将示例数据放入表中以进行测试的工具 我想知道是否有任何方法[0]可以接受标记为可序列化的模型类,并从用适当属性修饰的属性生成示例XML或JSON 关于从JSON或XML生成C#类,在SO和其他地方都有很多问题,但我想要的是稍微不同的 这里的具体用例是,我正在等待另一个开发人员的JSON输出,并想知道是否有一种方法可以让我获得一个jumpstart,这样我就可以使用这

希望这不会违反“推荐或查找工具、库或最喜爱的非网站资源”的非主题规则,但无论如何还是要这样做

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

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

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

这里的具体用例是,我正在等待另一个开发人员的JSON输出,并想知道是否有一种方法可以让我获得一个jumpstart,这样我就可以使用这个方法测试我的代码,不管这个方法是什么

我只使用标准的XML serialiser和JSON.NET库,但如果需要,可以切换到其他库

[0]
我知道我可以编写代码,使用反射实例化一个类,然后反射到该实例中,并以这种方式编写XML或JSON,但这本身就是一个大项目。我希望在.NET框架中有一种预先存在的方法,或者某种FOSS工具,您可以使用一些单元测试工具来帮助您

例如,您可以使用示例数据填充属性,然后将其序列化为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; }
}
void Main()
{
var samplePerson=Builder.CreateNew().Build();
var json=JsonConvert.SerializeObject(samplePerson);
//将{“Name”:“Name1”,“Age”:1}输出到屏幕
json.Dump();
}
公共阶层人士
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
以下是linqpad代码:

但是,这不会使用属性属性作为辅助

一个更详细的例子:

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);
var hierarchySpec=Builder.CreateNew()
.With(x=>x.AddMethod=(父,子)=>parent.AddChild(子))
.带(x=>x.深度=5)
.带(x=>x.MaximumChildren=10)
.带(x=>x.MinimumChildren=5)
.With(x=>x.NamingMethod=(cat,title)=>cat.title=“Category”+title)
.With(x=>x.NumberOfRoots=10).Build();
Builder.CreateListOfSize(2500).BuildHierarchy(hierarchySpec);
()


作为旁注:


除非您正在进行“结束2结束”测试。。。您的问题确实让我觉得您可能对另一个组件有硬编码依赖。您应该能够在不需要准备其他组件的情况下测试代码(特别是来自其他开发人员的组件)。如果您还不熟悉它,我建议您阅读以模拟依赖组件的行为。如果您只是在进行端到端测试,并且完全了解单元测试/模拟等,请忘记这一段::-)

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

例如,您可以使用示例数据填充属性,然后将其序列化为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; }
}
void Main()
{
var samplePerson=Builder.CreateNew().Build();
var json=JsonConvert.SerializeObject(samplePerson);
//将{“Name”:“Name1”,“Age”:1}输出到屏幕
json.Dump();
}
公共阶层人士
{
公共字符串名称{get;set;}
公共整数{get;set;}
}
以下是linqpad代码:

但是,这不会使用属性属性作为辅助

一个更详细的例子:

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);
var hierarchySpec=Builder.CreateNew()
.With(x=>x.AddMethod=(父,子)=>parent.AddChild(子))
.带(x=>x.深度=5)
.带(x=>x.MaximumChildren=10)
.带(x=>x.MinimumChildren=5)
.With(x=>x.NamingMethod=(cat,title)=>cat.title=“Category”+title)
.With(x=>x.NumberOfRoots=10).Build();
Builder.CreateListOfSize(2500).BuildHierarchy(hierarchySpec);
()


作为旁注:


除非您正在进行“结束2结束”测试。。。您的问题确实让我觉得您可能对另一个组件有硬编码依赖。您应该能够在不需要准备其他组件的情况下测试代码(特别是来自其他开发人员的组件)。如果您还不熟悉它,我建议您阅读以模拟依赖组件的行为。如果您只是在进行端到端测试,并且完全了解单元测试/模拟等,请忘记这一段::-)

您需要XmlSerializer和JSON.NET不提供的什么?你的意思是你想要一个工具(是的,这是离题的),根据模型的数据类型为模型的属性生成数据?所以你给它一个类定义,它给你实例化类和垃圾数据,然后你可以序列化?然后看。@CodeCaster如果你想充实这一点,这是一个很好的回答。不,如果你真的在寻找一个工具或库,它可以提供一个类定义,并返回一个充满随机数据的类实例,这是离题的,重复的。所以我不想把这当作一个回答@CodeCaster明白了,谢谢你需要XmlSerializer和JSON.NET没有提供的东西吗?你的意思是你想要一个工具(是的,这是离题的),根据模型的数据类型为模型的属性生成数据?所以你给它一个类定义,它给你实例化类和垃圾数据,然后你可以序列化?然后看。@CodeCaster如果你想充实这一点,这是一个很好的回答。不,如果你真的在寻找一个工具或库,它可以提供一个类定义,并返回一个充满随机数据的类实例,这是离题的,重复的。所以我真的不想