我使用的JsonFX进行json的序列化操作。对JsonFX的保存与读取,网上的教程一抓一大把,这里就不再赘述了。
今天主要实现的是如何在序列化的时候,忽略空值,从而减少json文件的空间占用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
using UnityEngine; using System.Collections; using System.Collections.Generic; using JsonFx.Json; // 引入库 using System.ComponentModel; public class NewBehaviourScript : MonoBehaviour { // Use this for initialization void Start() { Bag bag1 = new Bag(); bag1.id = 1; bag1.name = "武器"; bag1.equipments = new List<Equipment>(); Equipment equipment = new Equipment(); equipment.type = 11; bag1.equipments.Add(equipment); // 这里我们没有给weapons对象赋值 string data = JsonWriter.Serialize(bag1); // 将对象转成json Debug.Log(data); // 看下我们保存的json是否包含weapons } } public class Bag { public int id; public string name; [JsonSpecifiedProperty("EquipmentsNotNull")] // 如果该值为null 则不序列化 public List<Equipment> equipments; [JsonIgnore] // 不管该值是否为null 都不会参与序列化 public bool EquipmentsNotNull { get { return equipments != null; } } // 如果该值为null时,想被json序列化忽略,可以用以下两种方式 // 第一种 DefaultValue [DefaultValue(null)] public List<Weapon> weapons; // 第二种 JsonSpecifiedProperty 配合 JsonIgnore使用 //[JsonSpecifiedProperty("WeaponsNotNull")] //public List<Weapon> weapons; //[JsonIgnore] //public bool WeaponsNotNull { get { return weapons != null; } } } public class Equipment { public int type; } public class Weapon { public int damage; } |
- 本文固定链接: http://www.u3d8.com/?p=1179
- 转载请注明: 网虫虫 在 u3d8.com 发表过