static void outObjectJson(string offset, JefData data) { outFile.WriteLine("{"); int cnt = data.asObject.Count; foreach (KeyValuePair<string, JefData> dat in data.asObject) { outFile.Write("{0}{1}\"{2}\":", offset, offsetString, dat.Key); if ((dat.Value.type == JefType.Array) || (dat.Value.type == JefType.Object)) outFile.Write("\r\n{0}{1}", offset, offsetString); outDataJson(offset + offsetString, dat.Value); cnt--; if (cnt >0) outFile.WriteLine(','); else outFile.WriteLine(); } outFile.Write("{0}}}", offset); }
static JefData ReadObject() { Match('{'); string key; JefData val; Dictionary<string, JefData> res = new Dictionary<string, JefData>(); while (sym != '}') { ReadString(out key); SkipWhite(); val = null; if (sym == ':') { Match(':'); val = ReadData(); } if (key != "") { if (val != null) { if (res.ContainsKey(key)) res[key] = val; else res.Add(key, val); } else { if (res.ContainsKey(key)) res[key] = new JefData(true); else res.Add(key, new JefData(true)); } } if (sym == ';') Match(';'); else if (sym == ',') Match(','); } Match('}'); return new JefData(res); }
static void outObject(string offset, JefData data) { outFile.WriteLine("{"); foreach (KeyValuePair<string, JefData> dat in data.asObject) { outFile.Write("{0}{1}{2}: ", offset, offsetString, dat.Key); if ((dat.Value.type == JefType.Array) || (dat.Value.type == JefType.Object)) outFile.Write("\n{0}{1}", offset, offsetString); outData(offset + offsetString, dat.Value); if (dat.Value.type != JefType.Array && dat.Value.type != JefType.Object) outFile.Write(';'); outFile.WriteLine(); } outFile.Write("{0}}}", offset); }
static void outDataJson(string offset, JefData data) { if (data.type == JefType.Array) outArrayJson(offset, data); else if (data.type == JefType.Object) outObjectJson(offset, data); else if (data.type == JefType.Boolean) outFile.Write(data.bValue ? "true" : "false"); else if (data.type == JefType.String) outFile.Write("\"" + data.sValue .Replace("\\", "\\\\") .Replace("\r\n", "\n") .Replace("\n", "\\n") .Replace("\b", "\\b") .Replace("\f", "\\f") .Replace("\t", "\\t") .Replace("\"", "\\\"") + "\""); else outFile.Write(data.SaveToString()); }
static void outData(string offset, JefData data) { if (data.type == JefType.Array) outArray(offset, data); else if (data.type == JefType.Object) outObject(offset, data); else outFile.Write(data.SaveToString()); }
static void outArrayJson(string offset, JefData data) { outFile.WriteLine("["); int cnt = data.asArray.Count; foreach (JefData dat in data.asArray) { outFile.Write("{0}{1}", offsetString, offset); outDataJson(offset + offsetString, dat); cnt--; if (cnt > 0) outFile.WriteLine(','); else outFile.WriteLine(); } outFile.Write("{0}]", offset); }
static void outArray(string offset, JefData data) { outFile.WriteLine("["); foreach (JefData dat in data.asArray) { outFile.Write("{0}{1}", offsetString, offset); outData(offset + offsetString, dat); outFile.WriteLine(); } outFile.Write("{0}]", offset); }