C#
定石2: JsonSerializerSettingsで業務系ベース設定を固定
出典: C# Newtonsoft.Json で業務系JSON処理を実戦投入する完全ガイド(.NET Framework 4.7.2 編) — 定石2: JsonSerializerSettingsで業務系ベース設定を固定
// ✅定石2:業務系ベース設定(プロジェクト全体で使い回す)
public static class JsonConfig
{
public static readonly JsonSerializerSettings BusinessDefault = new JsonSerializerSettings
{
// DateTimeはUTC統一(ローカル化事故を予防)
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
DateFormatHandling = DateFormatHandling.IsoDateFormat,
// nullプロパティは出力しない(APIレスポンスを軽くする)
NullValueHandling = NullValueHandling.Ignore,
// decimalをdoubleにしない(金額計算の精度保持)
FloatParseHandling = FloatParseHandling.Decimal,
// CamelCaseに統一(外部APIで多数派)
ContractResolver = new Newtonsoft.Json.Serialization.CamelCasePropertyNamesContractResolver(),
//循環参照を無視(DataTable / EFエンティティでよく踏む)
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
};
}
//使う側
string json = JsonConvert.SerializeObject(order, JsonConfig.BusinessDefault);
var parsed = JsonConvert.DeserializeObject<OrderDto>(json, JsonConfig.BusinessDefault);
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
Source収録記事
この snippet は記事の「定石2: JsonSerializerSettingsで業務系ベース設定を固定」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。
同じ記事から
5 件// ✅定石1:最小シリアライズ・デシリアライズ using Newtonsoft.Json; public class OrderDto
▶ 実行可
定石1: NuGetでNewtonsoft.Jsonを入れる+最小コード
#ebd2150a39f0
// ❌ NG:既定設定でKind=Localをシリアライズすると、ローカル時刻が出力される var bad = new { CreatedAt = DateTime.Now }; // Kind=Local string badJson = JsonConvert.SerializeObject(bad); // → {"CreatedAt":"2026-05-09T14:00:00+09:00"} ← JST環境のローカル時刻未収録
定石3: DateTimeのUTC統一で時刻ズレを潰す
#4610d44165e1
// ✅定石4:金額用カスタムJsonConverter(書き出し時に円マーク付与など) public class MoneyJsonConverter : JsonConverter<decimal> { public override void WriteJson(JsonWriter writer, decimal value, JsonSerializer serializer)未収録
定石4:カスタムJsonConverter —業務固有型の専用変換
#90fd64ac232b
// ✅定石5: JsonTextReaderで巨大JSONをストリーミング読み込み using (var fs = new FileStream(jsonFilePath, FileMode.Open, FileAccess.Read)) using (var sr = new StreamReader(fs)) using (var reader = new JsonTextReader(sr))未収録
定石5: JsonTextReaderでストリーミング読み込み
#15abeba39934
// ❌ NG: JObject経由でdouble化け(金額計算が事故る) string apiResponse = "{\"amount\": 12500.10}"; var jobj = Newtonsoft.Json.Linq.JObject.Parse(apiResponse);未収録
定石6: decimalがdoubleに化ける問題と対策
#4e944e9ff5db
