ln.json/JSONArray.cs

66 lines
1.6 KiB
C#
Raw Permalink Normal View History

2017-11-03 13:13:09 +01:00
using System;
2017-10-26 16:41:14 +02:00
using System.Text;
using System.Collections.Generic;
2019-08-29 14:16:55 +02:00
using ln.json.mapping;
2017-10-26 16:41:14 +02:00
2019-08-07 23:02:00 +02:00
namespace ln.json
2017-10-26 16:41:14 +02:00
{
2019-08-07 23:02:00 +02:00
public class JSONArray : JSONValue
{
public override IEnumerable<JSONValue> Children => Values;
public override bool HasChildren => true;
2019-08-08 00:34:16 +02:00
public int Count => values.Count;
2019-08-29 14:16:55 +02:00
public override object ToNative()
{
return JSONMapper.DefaultMapper.FromJson(this, typeof(object[]));
}
2019-08-07 23:02:00 +02:00
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();
}
}
2017-10-26 16:41:14 +02:00
}