---
title: "xConnectエンティティをJSON.NETでシリアライズします"
slug: "serialize-xconnect-entities-using-json-net"
abstract: "例を使ったJSON.NETを使ってxConnectエンティティをシリアライズする方法。"
---
# xConnectエンティティをJSON.NETでシリアライズします

このトピックでは、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<Contact>(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" } );