[解決済み] .NET WebAPI Serialization k_BackingField Nastiness
2023-05-02 02:52:40
質問
以下のようにシリアライズすると
[Serializable]
public class Error
{
public string Status { get; set; }
public string Message { get; set; }
public string ErrorReferenceCode { get; set; }
public List<FriendlyError> Errors { get; set; }
}
こんな気持ち悪いのが出るんだ。
<ErrorRootOfstring xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Printmee.Api">
<_x003C_Errors_x003E_k__BackingField>
An exception has occurred. Please contact printmee support
</_x003C_Errors_x003E_k__BackingField>
<_x003C_LookupCode_x003E_k__BackingField>988232ec-6bc9-48f3-8116-7ff7c71302dd</_x003C_LookupCode_x003E_k__BackingField>
</ErrorRootOfstring>
どうしたらいいの?どうすればきれいになるのでしょうか?JSONの応答には、k_BackingFieldも含まれます。
どのように解決するのですか?
初期状態では
[Serializable]
も
[DataContract]
で、Web APIと連携することができます。
モデルをそのままにしておくだけで、Web APIがすべてのパブリックプロパティをシリアライズしてくれます。
何が含まれるかをもっとコントロールしたい場合のみ、クラスを
[DataContract]
で飾り、含まれるプロパティを
[DataMember]
(に含まれるプロパティ(DCSとJSON.NETの両方がこれらの属性を尊重するため)。
もし何らかの理由で
[Serializable]
が必要な場合 (例えば、何らかの理由でメモリストリームにシリアライズする場合、ディープコピーを行う場合など)、バッキングフィールド名を防ぐために両方の属性を組み合わせて使用する必要があります。
[Serializable]
[DataContract]
public class Error
{
[DataMember]
public string Status { get; set; }
[DataMember]
public string Message { get; set; }
[DataMember]
public string ErrorReferenceCode { get; set; }
[DataMember]
public List<FriendlyError> Errors { get; set; }
}
関連
最新
-
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 実装 サイバーパンク風ボタン