次のような静的なネストされたクラスのセットが与えられます。
public static class LocalSiteMap
{
public static class Navigation
{
public static readonly string Home = "homePage";
public static class PageIds
{
public static class ShowManagement
{
public static readonly string Index = "showManagement";
}
public static class Shows
{
public static readonly string Create = "addShows";
}
}
public static class Actors
{
public static readonly string Details = "actorDetailsForm";
public static readonly string History= "historyDetailsForm";
}
}
}
次のような同等のJSON文字列を作成したいと思います。
{ 'localSiteMap' : {
{ 'navigation': {
'home': 'homePage',
'pageIds': {
'showManagement': {
'index': 'showManagement'
},
'shows': {
'create': 'addShows'
}
},
'actors': {
'details': 'actorDetailsForm',
'history': 'historyDetailsForm'
}
}
}
ネストされた各クラスは、JSONにネストされたオブジェクトになります。各文字列プロパティは、JSONで文字列のキーと値のペアになります。
ルートの静的クラスを反映してJSON文字列を非常に簡単に構築できることは知っていますが(これが現在採用しているアプローチです)、もっと洗練された方法があるのではないかと思いました。たとえば、これがインスタンスの匿名型である場合、非常に簡単にシリアル化できます。
背景:これは、WebAPIコントローラーを介してブラウザーで実行されているシングルページアプリケーションに渡される定数のセットです。C#(サーバー)とJS(クライアント)の両方の世界で同じページ識別子のセットを使用できると、ページオブジェクトパターンを使用するブラウザー自動化テストに非常に役立ちます。
'LocalSiteMap'静的クラスはすでにかなり成熟したプロジェクトに組み込まれているため、代わりにインスタンスクラスまたは匿名型に変更することは私にとって実際のオプションではありません。