私はUnity3DでJson.NET(v90r1)のNet20ライブラリを使用していますが、Json.NETを使用して型のフィールドをシリアル化しようとしています。Json.NETでFormatterAssemblyStyle.SimpleでType型のフィールドをシリアライズ
私は、FormatterAssemblyStyle
が自動的に生成されたタイプ情報に影響を与えることがありますが、タイプタイプのフィールドには影響しないようです。たとえば:
using Newtonsoft.Json;
using System.Runtime.Serialization.Formatters;
using UnityEngine;
public class Example : MonoBehaviour
{
void Start()
{
var settings = new JsonSerializerSettings() {
Formatting = Formatting.Indented,
TypeNameHandling = TypeNameHandling.All,
TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple,
};
Debug.Log(JsonConvert.SerializeObject(new Foo(), settings));
}
}
public class Foo
{
public System.Type type = typeof(void);
}
は、この次のようなJSON文字列になります:あなたが見ることができるように
{
"$type": "Foo, Assembly-CSharp",
"type": "System.Void, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
}
、FormatterAssemblyStyle.Simple
は$type
のために使用されてきたが、FormatterAssemblyStyle.Full
はtype
のために使用されてきました。
これは私の所望の出力です:
{
"$type": "Foo, Assembly-CSharp",
"type": "System.Void, mscorlib"
}
は、どのように私は両方のタイプが同じように印刷するのですか?ほとんどの検索結果は、プライベートメンバーのシリアライズやクラスのシリアライズに関連するため、のタイプの情報ではなく、のタイプがのタイプのシリアル化であるため、答えを見つけることができませんでした。