xConnectエンティティをJSON.NETでシリアライズします
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
このトピックでは、JSON.NETを用いてxConnectエンティティをシリアライズする方法を示します。xConnectオブジェクトをシリアライズしたい場合、以下の場合があります:
- ファセットを外部データベースにキャッシュしたいのです。
- xConnectクライアントを使ってデータを読み取り、返されたデータに対して修正されたデータを別のサービスに渡すカスタムWeb APIエンドポイントがあります。
!警告連絡先やインタラクションデータをキャッシュやデータベースに書き込む際は、国際的なデータプライバシー規制を念頭に置いてください。例えば、PIISensitiveとマークされた接触面をシリアライズするのは避けたいかもしれません。
xConnectエンティティをJSON.NETでシリアライズするには、示すようにJsonSerializerSettingsオブジェクトを定義し、このオブジェクトをSerializeObjectメソッドに渡します。
using Newtonsoft.Json; using Sitecore.XConnect; using Sitecore.XConnect.Client.Serialization;
namespace Documentation { public class Serialize { // Async example public async void SerializeEntities() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { var serializerSettings = new JsonSerializerSettings { ContractResolver = new XdbJsonContractResolver(client.Model, serializeFacets: true, serializeContactInteractions: true), DateTimeZoneHandling = DateTimeZoneHandling.Utc, DefaultValueHandling = DefaultValueHandling.Ignore };
var contact = await client.GetAsync
JsonConvert.SerializeObject(contact, serializerSettings); } } } }
非同期および同期拡張手法
ユニットテストの文脈では、Sitecore.XConnect.Serialization.DeserializationHelpersクラスを使ってContactクラスとInteractionクラスに読み取り専用プロパティを設定することができます。以下の例はSetFacet() メソッドの使い方を示しています:
// New test contact var contact = new Contact();
// New test contact facet Sitecore.XConnect.Serialization.DeserializationHelpers.SetFacet(contact, PersonalInformation.DefaultFacetKey, new PersonalInformation() { FirstName = "Myrtle" } );