ln.json/JSONObject.cs

87 lines
1.6 KiB
C#

using System;
using System.Text;
using System.Collections.Generic;
using sharp.extensions;
using System.Reflection;
using System.Linq;
namespace sharp.json
{
public class JSONObject : JSON
{
public JSONObject()
:base(JSONTypes.Object){}
private Dictionary<string, JSON> values = new Dictionary<string, JSON>();
public override JSON this[string name]
{
get { return this.values[name]; }
set { this.values[name] = value; }
}
public override int Count
{
get { return this.values.Count; }
}
public override bool Boolean
{
get { return this.values.Count > 0; }
}
public override bool Contains(object o)
{
return this.values.ContainsKey((string)o);
}
public override string[] prettyPrint()
{
List<string> lines = new List<string>();
lines.Add("{");
string[] keys = this.values.Keys.ToArray();
for (int n=0;n<keys.Length;n++)
{
string[] clines = this[keys[n]].prettyPrint();
lines.Add(String.Format(" {0} : {1}",new JSONString(keys[n]),clines[0]));
foreach (string cline in clines.Segment(1)){
lines.Add(String.Format(" {0}",cline));
}
if (n < keys.Length-1){
lines[lines.Count - 1] += ",";
}
}
lines.Add("}");
return lines.ToArray();
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append("{");
string[] keys = this.values.Keys.ToArray();
for (int n=0;n<keys.Length;n++)
{
sb.Append(new JSONString(keys[n]).ToString());
sb.Append(":");
sb.Append(this[keys[n]].ToString());
if (n+1 < keys.Length){
sb.Append(",");
}
}
sb.Append("}");
return sb.ToString();
}
}
}