1. xConnectモデル

xConnectエンティティをJSON.NETでシリアライズします

Version:
日本語翻訳に関する免責事項

このページの翻訳は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(new IdentifiedContactReference("twitter", "myrtlesitecore"), new ContactExpandOptions() { });

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" } );

この記事を改善するための提案がある場合は、 お知らせください!