ln.json/JSONArray.cs

66 lines
1.6 KiB
C#

using System;
using System.Text;
using System.Collections.Generic;
using ln.json.mapping;
namespace ln.json
{
public class JSONArray : JSONValue
{
public override IEnumerable<JSONValue> Children => Values;
public override bool HasChildren => true;
public int Count => values.Count;
public override object ToNative()
{
return JSONMapper.DefaultMapper.FromJson(this, typeof(object[]));
}
JSONValue[] Values
{
get => values.ToArray();
set
{
values.Clear();
values.AddRange(value);
}
}
List<JSONValue> values = new List<JSONValue>();
public JSONArray()
: base(JSONValueType.ARRAY) { }
public override JSONValue this[int index] {
get => values[index];
set => values[index] = value;
}
public JSONArray Add(JSONValue value){ values.Add(value); return this; }
public JSONArray Remove(int index) { values.RemoveAt(index); return this; }
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append('[');
IEnumerator<JSONValue> kenum = values.GetEnumerator();
if (kenum.MoveNext())
do
{
sb.Append(kenum.Current.ToString());
if (!kenum.MoveNext())
break;
sb.Append(',');
} while (true);
sb.Append(']');
return sb.ToString();
}
}
}