Newtonsoft.Jsonには、匿名型用の長い$ type文字列があります

ジェイコブエガーズ

Json.Net typenamehandlingがオブジェクトに設定されている場合、匿名オブジェクトは次のように非常に長いタイプ名を持つことができます。

_IB_8bgoVaqDaVjOpT0PxYDBjiO_pwOo[[System.Guid, mscorlib],[System.Nullable`1[[System.Guid, mscorlib]], mscorlib],[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib],[System.String, mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib],[System.Nullable`1[[System.Int32, mscorlib]], mscorlib],[System.String, mscorlib]], _IB_8bgoVaqDaVjOpT0PxYDBjiO_pwOo_IdeaBlade

そのサイズを小さくするために微調整できる設定はありますか?

ジョー・エンツミンガー

DefaultSerializationBinderから派生した独自のSerializationBinderを作成します。

BindToName(以下のデフォルトコード)を匿名タイプ用の独自のロジックでオーバーライドします(デフォルトの実装は以下です)。

public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
{
#if NETFX_CORE || PORTABLE
        assemblyName = serializedType.GetTypeInfo().Assembly.FullName;
        typeName = serializedType.FullName;
#else
        assemblyName = serializedType.Assembly.FullName;
        typeName = serializedType.FullName;
#endif
}

次に、SerializeまたはDeserializeを呼び出す前に、JsonSerializerのBinderプロパティをカスタムSerializationBinderのインスタンスに設定します。

実装は次のようになります。

public override void BindToName(Type serializedType, out string assemblyName, out string typeName)
{
     //http://stackoverflow.com/questions/2483023/how-to-test-if-a-type-is-anonymous
     if(Attribute.IsDefined(type, typeof(CompilerGeneratedAttribute), false)
    && type.IsGenericType && type.Name.Contains("AnonymousType")
    && (type.Name.StartsWith("<>") || type.Name.StartsWith("VB$"))
    && (type.Attributes & TypeAttributes.NotPublic) == TypeAttributes.NotPublic)
    {
        return "AnonymousType";
    }
    base.BindToName(serializedType, out assemblyName, out typeName);
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

NewtonsoftでJson文字列を解析します

分類Dev

Newtonsoft JSON:TypeNameHandling- $ typeの目的

分類Dev

NewtonSoftパッケージの.NETCoreにJObjectがありません

分類Dev

Newtonsoft.JSON:JSONリストと配列の処理が異なります

分類Dev

Newtonsoft.Jsonによる列挙型の逆シリアル化

分類Dev

Newtonsoft.Json.Linq.JArray.Parse(string) 'にいくつかの無効な引数があります

分類Dev

'Newtonsoft.Json.JsonConvert.DeserializeObject(string)'にいくつかの無効な引数があります

分類Dev

「Newtonsoft.Json」にはすでに「Microsoft.CSharp」に対して定義された依存関係があります

分類Dev

「Newtonsoft.Json」にはすでに「Microsoft.CSharp」に対して定義された依存関係があります

分類Dev

NewtonsoftはC#で配列を読み取ります

分類Dev

Newtonsoftで名前のないjson文字列を変換するにはどうすればよいですか?

分類Dev

文字列をNewtonsoft.Json.Linq.JObjectに変換する方法

分類Dev

Newtonsoft.Json JsonConvert to XmlDocument日付形式は、要素に属性がある場合に一貫性がありません

分類Dev

Escaping quotes in Newtonsoft JSON

分類Dev

Newtonsoft.Json.JsonReaderException

分類Dev

NewtonSoft.JsonのJObjectを列挙すると、C#で「\」文字が失われます

分類Dev

Newtonsoft.Json.Linq.JPropertyをNewtonsoft.Json.Linq.JArrayに追加できません

分類Dev

Newtonsoft.JSONを使用して動的JSONを解析すると、逆シリアル化されたオブジェクトに配列がありません

分類Dev

StringBuilderjsonとNewtonsoftは同じではありません

分類Dev

Newtonsoft.JSONシリアル化は、オブジェクトのタイプを持つ唯一の文字列になります

分類Dev

Newtonsoft JsonConvert.SerializeObjectは、名前が大文字の場合、JsonPropertyを無視します

分類Dev

現在、jsonデータを文字列型の列に保存していますが、型をjsonにすることには利点がありますか?

分類Dev

文字列がnewtonsoftによって逆シリアル化できるかどうかを判断できますか?

分類Dev

Newtonsoft.Json長い木の使用法

分類Dev

c#またはjobjectまたはnewtonsoftを使用して2つのjson文字列を結合する

分類Dev

Newtonsoft JSON for.netはjsonpropertyタグを無視しています

分類Dev

newtonsoftを使用して次のjsonでキー名の値を取得する簡単な方法はありますか?

分類Dev

Newtonsoft.Json.Linq.JObject.ToObject()日付を文字列形式に変換

分類Dev

NuGetエラー「Newtonsoft.Json」を介したjson.NETのインストールには、Microsoft C#用に定義された依存関係がすでにあります。

Related 関連記事

  1. 1

    NewtonsoftでJson文字列を解析します

  2. 2

    Newtonsoft JSON:TypeNameHandling- $ typeの目的

  3. 3

    NewtonSoftパッケージの.NETCoreにJObjectがありません

  4. 4

    Newtonsoft.JSON:JSONリストと配列の処理が異なります

  5. 5

    Newtonsoft.Jsonによる列挙型の逆シリアル化

  6. 6

    Newtonsoft.Json.Linq.JArray.Parse(string) 'にいくつかの無効な引数があります

  7. 7

    'Newtonsoft.Json.JsonConvert.DeserializeObject(string)'にいくつかの無効な引数があります

  8. 8

    「Newtonsoft.Json」にはすでに「Microsoft.CSharp」に対して定義された依存関係があります

  9. 9

    「Newtonsoft.Json」にはすでに「Microsoft.CSharp」に対して定義された依存関係があります

  10. 10

    NewtonsoftはC#で配列を読み取ります

  11. 11

    Newtonsoftで名前のないjson文字列を変換するにはどうすればよいですか?

  12. 12

    文字列をNewtonsoft.Json.Linq.JObjectに変換する方法

  13. 13

    Newtonsoft.Json JsonConvert to XmlDocument日付形式は、要素に属性がある場合に一貫性がありません

  14. 14

    Escaping quotes in Newtonsoft JSON

  15. 15

    Newtonsoft.Json.JsonReaderException

  16. 16

    NewtonSoft.JsonのJObjectを列挙すると、C#で「\」文字が失われます

  17. 17

    Newtonsoft.Json.Linq.JPropertyをNewtonsoft.Json.Linq.JArrayに追加できません

  18. 18

    Newtonsoft.JSONを使用して動的JSONを解析すると、逆シリアル化されたオブジェクトに配列がありません

  19. 19

    StringBuilderjsonとNewtonsoftは同じではありません

  20. 20

    Newtonsoft.JSONシリアル化は、オブジェクトのタイプを持つ唯一の文字列になります

  21. 21

    Newtonsoft JsonConvert.SerializeObjectは、名前が大文字の場合、JsonPropertyを無視します

  22. 22

    現在、jsonデータを文字列型の列に保存していますが、型をjsonにすることには利点がありますか?

  23. 23

    文字列がnewtonsoftによって逆シリアル化できるかどうかを判断できますか?

  24. 24

    Newtonsoft.Json長い木の使用法

  25. 25

    c#またはjobjectまたはnewtonsoftを使用して2つのjson文字列を結合する

  26. 26

    Newtonsoft JSON for.netはjsonpropertyタグを無視しています

  27. 27

    newtonsoftを使用して次のjsonでキー名の値を取得する簡単な方法はありますか?

  28. 28

    Newtonsoft.Json.Linq.JObject.ToObject()日付を文字列形式に変換

  29. 29

    NuGetエラー「Newtonsoft.Json」を介したjson.NETのインストールには、Microsoft C#用に定義された依存関係がすでにあります。

ホットタグ

アーカイブ