Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- JsonSerializerSettings settings = new JsonSerializerSettings();
- settings.ContractResolver = new ContractResolver();
- ...
- public class ContractResolver : DefaultContractResolver {
- public override JsonContract ResolveContract(Type type) {
- JsonContract contract = base.ResolveContract(type);
- if(typeof(Vector2Int).IsAssignableFrom(type)) {
- contract.Converter = new Vector2IntConverter();
- }
- return contract;
- }
- //don't remember what this does or if it is needed.
- protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization) {
- IList<JsonProperty> properties = base.CreateProperties(type, memberSerialization);
- foreach(JsonProperty prop in properties) {
- prop.DefaultValueHandling = DefaultValueHandling.Ignore;
- }
- return properties;
- }
- }
- //sample Unity Vector resolver.
- public class Vector2IntConverter : JsonConverter {
- public override bool CanConvert(Type objectType) {
- return typeof(Vector2Int).IsAssignableFrom(objectType);
- }
- public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) {
- JObject jObject = JObject.Load(reader);
- return new Vector2Int((int)jObject.GetValue("x"), (int)jObject.GetValue("y"));
- }
- public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) {
- Vector2Int v = (Vector2Int)value;
- JObject o = new JObject();
- o.Add(new JProperty("x", v.x));
- o.Add(new JProperty("y", v.y));
- o.WriteTo(writer);
- }
- public override bool CanRead {
- get { return true; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement