[解決済み] オブジェクトをクエリ文字列形式にシリアライズするには?
2023-04-19 20:53:35
質問
オブジェクトをクエリ文字列形式にシリアライズするにはどうしたらよいでしょうか。googleで調べても答えが見つからないようです。ありがとうございます。
例として、私がシリアライズするオブジェクトを示します。
public class EditListItemActionModel
{
public int? Id { get; set; }
public int State { get; set; }
public string Prefix { get; set; }
public string Index { get; set; }
public int? ParentID { get; set; }
}
どのように解決するのですか?
このための組み込みのユーティリティ メソッドがないことは 99% 確実です。これはあまり一般的なタスクではなく、Web サーバーは通常 に応答します。 というのは、Web サーバーは通常、URLEncoded キー/値文字列で応答しないからです。
リフレクションとLINQを混ぜるのはどうでしょうか?これはうまくいきます。
var foo = new EditListItemActionModel() {
Id = 1,
State = 26,
Prefix = "f",
Index = "oo",
ParentID = null
};
var properties = from p in foo.GetType().GetProperties()
where p.GetValue(foo, null) != null
select p.Name + "=" + HttpUtility.UrlEncode(p.GetValue(foo, null).ToString());
// queryString will be set to "Id=1&State=26&Prefix=f&Index=oo"
string queryString = String.Join("&", properties.ToArray());
更新します。
任意の1-deepオブジェクトのQueryString表現を返すメソッドを書くには、次のようにします。
public string GetQueryString(object obj) {
var properties = from p in obj.GetType().GetProperties()
where p.GetValue(obj, null) != null
select p.Name + "=" + HttpUtility.UrlEncode(p.GetValue(obj, null).ToString());
return String.Join("&", properties.ToArray());
}
// Usage:
string queryString = GetQueryString(foo);
また、あまり追加作業をせずに、拡張メソッドにすることもできます。
public static class ExtensionMethods {
public static string GetQueryString(this object obj) {
var properties = from p in obj.GetType().GetProperties()
where p.GetValue(obj, null) != null
select p.Name + "=" + HttpUtility.UrlEncode(p.GetValue(obj, null).ToString());
return String.Join("&", properties.ToArray());
}
}
// Usage:
string queryString = foo.GetQueryString();
関連
-
.NET 6:.NETのロギングコンポーネントlog4netを使用する。
-
swagger uiをasp.net coreに統合する原理
-
[解決済み] JavaScriptでクエリ文字列の値を取得するにはどうすればよいですか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] JavaScriptのオブジェクトを表示するにはどうすればよいですか?
-
[解決済み] Node.js上のExpress.jsでGET(クエリ文字列)変数を取得する方法とは?
-
[解決済み] JSオブジェクトをJSON文字列に変換する
-
[解決済み] .NETでC#オブジェクトをJSON文字列に変換するには?
-
[解決済み] print()を使用してクラスのインスタンスを表示するには?
-
[解決済み] Asp.Net 4でValidateRequest="false "が動作しない。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
.NET Coreでオブジェクトプールを使用する
-
ASP.NET学習でよくあるエラーのまとめ
-
一時的なクラスを生成できない(result=1)、問題の解決方法
-
[解決済み] Server Error in '/' Application」エラーの解決方法を教えてください。
-
[解決済み] crossdomain.xmlファイルとは何ですか?
-
[解決済み] ASP.NET MVC - カスタムIIdentityまたはIPrincipalの設定
-
[解決済み] C#でURLのクエリ文字列を作成するには?
-
[解決済み] カタナ」と「オウイン」をわかりやすく説明すると?
-
[解決済み] パネルまたはPlaceHolderの使用
-
[解決済み] フレームワークのランタイムターゲットが見つからない .NETCoreApp=v1 互換ランタイムの1つと互換性がある