2017-10-26 16:41:14 +02:00
|
|
|
|
using System;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Collections.Generic;
|
2017-11-03 13:13:09 +01:00
|
|
|
|
using sharp.extensions;
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Linq;
|
2017-10-26 16:41:14 +02:00
|
|
|
|
|
|
|
|
|
namespace sharp.json
|
|
|
|
|
{
|
|
|
|
|
public class JSONObject : JSON
|
|
|
|
|
{
|
|
|
|
|
public JSONObject()
|
|
|
|
|
:base(JSONTypes.Object){}
|
|
|
|
|
|
2017-11-03 13:13:09 +01:00
|
|
|
|
private Dictionary<string, JSON> values = new Dictionary<string, JSON>();
|
|
|
|
|
|
|
|
|
|
public override JSON this[string name]
|
2017-10-26 16:41:14 +02:00
|
|
|
|
{
|
2017-11-03 13:13:09 +01:00
|
|
|
|
get { return this.values[name]; }
|
|
|
|
|
set { this.values[name] = value; }
|
2017-10-26 16:41:14 +02:00
|
|
|
|
}
|
|
|
|
|
|
2017-11-03 13:13:09 +01:00
|
|
|
|
public override int Count
|
2017-10-26 16:41:14 +02:00
|
|
|
|
{
|
2017-11-03 13:13:09 +01:00
|
|
|
|
get { return this.values.Count; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override bool Boolean
|
|
|
|
|
{
|
|
|
|
|
get { return this.values.Count > 0; }
|
|
|
|
|
}
|
2017-10-26 16:41:14 +02:00
|
|
|
|
|
2017-11-03 13:13:09 +01:00
|
|
|
|
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();
|
2017-10-26 16:41:14 +02:00
|
|
|
|
|
|
|
|
|
for (int n=0;n<keys.Length;n++)
|
|
|
|
|
{
|
2017-11-03 13:13:09 +01:00
|
|
|
|
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] += ",";
|
2017-10-26 16:41:14 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
2017-11-03 13:13:09 +01:00
|
|
|
|
lines.Add("}");
|
|
|
|
|
return lines.ToArray();
|
2017-10-26 16:41:14 +02:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override string ToString()
|
|
|
|
|
{
|
|
|
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
|
sb.Append("{");
|
|
|
|
|
|
2017-11-03 13:13:09 +01:00
|
|
|
|
string[] keys = this.values.Keys.ToArray();
|
2017-10-26 16:41:14 +02:00
|
|
|
|
|
|
|
|
|
for (int n=0;n<keys.Length;n++)
|
|
|
|
|
{
|
2017-11-23 13:05:58 +01:00
|
|
|
|
sb.Append(new JSONString(keys[n]).ToString());
|
2017-10-26 16:41:14 +02:00
|
|
|
|
sb.Append(":");
|
|
|
|
|
sb.Append(this[keys[n]].ToString());
|
|
|
|
|
if (n+1 < keys.Length){
|
|
|
|
|
sb.Append(",");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
sb.Append("}");
|
|
|
|
|
return sb.ToString();
|
|
|
|
|
}
|
2017-11-03 13:13:09 +01:00
|
|
|
|
|
2017-10-26 16:41:14 +02:00
|
|
|
|
}
|
|
|
|
|
}
|