3 using System.Collections;
4 using System.Collections.Generic;
5 using System.Globalization;
11 public class JsonArray : JsonValue, IList<JsonValue>
15 public JsonArray (params JsonValue [] items)
17 list = new List<JsonValue> ();
21 public JsonArray (IEnumerable<JsonValue> items)
24 throw new ArgumentNullException ("items");
26 list = new List<JsonValue> (items);
29 public override int Count {
30 get { return list.Count; }
33 public bool IsReadOnly {
37 public override sealed JsonValue this [int index] {
38 get { return list [index]; }
39 set { list [index] = value; }
42 public override JsonType JsonType {
43 get { return JsonType.Array; }
46 public void Add (JsonValue item)
49 throw new ArgumentNullException ("item");
54 public void AddRange (IEnumerable<JsonValue> items)
57 throw new ArgumentNullException ("items");
59 list.AddRange (items);
62 public void AddRange (params JsonValue [] items)
67 list.AddRange (items);
75 public bool Contains (JsonValue item)
77 return list.Contains (item);
80 public void CopyTo (JsonValue [] array, int arrayIndex)
82 list.CopyTo (array, arrayIndex);
85 public int IndexOf (JsonValue item)
87 return list.IndexOf (item);
90 public void Insert (int index, JsonValue item)
92 list.Insert (index, item);
95 public bool Remove (JsonValue item)
97 return list.Remove (item);
100 public void RemoveAt (int index)
102 list.RemoveAt (index);
105 public override void Save (Stream stream)
108 throw new ArgumentNullException ("stream");
109 stream.WriteByte ((byte) '[');
110 for (int i = 0; i < list.Count; i++) {
111 JsonValue v = list [i];
115 stream.WriteByte ((byte) 'n');
116 stream.WriteByte ((byte) 'u');
117 stream.WriteByte ((byte) 'l');
118 stream.WriteByte ((byte) 'l');
122 stream.WriteByte ((byte) ',');
123 stream.WriteByte ((byte) ' ');
126 stream.WriteByte ((byte) ']');
129 IEnumerator<JsonValue> IEnumerable<JsonValue>.GetEnumerator ()
131 return list.GetEnumerator ();
134 IEnumerator IEnumerable.GetEnumerator ()
136 return list.GetEnumerator ();