試したソースの commit は 7f7d6e30b65e56e250baa49f5becba64730e5227
再現するコードは書けたけど、何でプロパティ名変えただけで起きるのかは調べきれてない。。
using System; using System.Runtime.Serialization; using Xunit; namespace Utf8Json.Tests { public class JapaneseTest { [Fact] /* 失敗する */ public void FailTest() { var m = new FailClass { 番号 = 908, 取引先名 = "あいうえお", 担当者名 = "かきくけこ", 日本語四 = "ABCDEFG", 日本語五 = "てすと", 日本語六 = new DateTime(2017, 10, 25, 8, 0, 0), 日本語七 = new DateTime(2017, 10, 25, 17, 0, 0), 日本語八 = 1 }; var mstr = JsonSerializer.ToJsonString(m); var desm = JsonSerializer.Deserialize<FailClass>(mstr); m.IsStructuralEqual(desm); } [Fact] /* 成功する */ public void SuccessTest() { var m = new SuccessClass { 番号 = 908, 取引先名 = "あいうえお", 日本語三 = "かきくけこ", 日本語四 = "ABCDEFG", 日本語五 = "てすと", 日本語六 = new DateTime(2017, 10, 25, 8, 0, 0), 日本語七 = new DateTime(2017, 10, 25, 17, 0, 0), 日本語八 = 1 }; var mstr = JsonSerializer.ToJsonString(m); var desm = JsonSerializer.Deserialize<SuccessClass>(mstr); m.IsStructuralEqual(desm); } } [DataContract] public class FailClass { [DataMember] public int 番号 { get; set; } [DataMember] public string 取引先名 { get; set; } [DataMember] public string 担当者名 { get; set; } [DataMember] public string 日本語四 { get; set; } [DataMember] public string 日本語五 { get; set; } [DataMember] public DateTime? 日本語六 { get; set; } [DataMember] public DateTime? 日本語七 { get; set; } [DataMember] public int? 日本語八 { get; set; } } [DataContract] public class SuccessClass { [DataMember] public int 番号 { get; set; } [DataMember] public string 取引先名 { get; set; } [DataMember] public string 日本語三 { get; set; } [DataMember] public string 日本語四 { get; set; } [DataMember] public string 日本語五 { get; set; } [DataMember] public DateTime? 日本語六 { get; set; } [DataMember] public DateTime? 日本語七 { get; set; } [DataMember] public int? 日本語八 { get; set; } } }