簡體   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