/// <summary>从指定Json原子元素读取流读出一个Json值,包括对象和数组</summary> /// <param name="reader"></param> /// <returns></returns> private SimpleJson Read(JsonAtomStringReader reader) { SimpleJson ret = null; string str; var t = reader.Read(false, out str); var retType = SimpleJsonType.Unknown; switch (t) { case JsonAtomType.NONE: break; case JsonAtomType.BRACE_OPEN: ret = ReadObject(reader); break; case JsonAtomType.BRACKET_OPEN: ret = ReadArray(reader); break; case JsonAtomType.TRUE: case JsonAtomType.FALSE: ret = Boolean(t == JsonAtomType.TRUE); break; case JsonAtomType.NULL: ret = Null(); break; case JsonAtomType.NUMBER: case JsonAtomType.NUMBER_EXP: ret = ParseInteger(str); break; case JsonAtomType.FLOAT: case JsonAtomType.FLOAT_EXP: ret = ParseFloat(str); break; case JsonAtomType.STRING: retType = SimpleJsonType.String; goto default; case JsonAtomType.LITERAL: retType = SimpleJsonType.Literal; goto default; case JsonAtomType.BRACE_CLOSE: case JsonAtomType.BRACKET_CLOSE: case JsonAtomType.COMMA: retType = SimpleJsonType.Undefined; goto default; case JsonAtomType.COLON: default: ret = new SimpleJson() { Type = retType, Value = str }; break; } if (ret != null) { if (FromJson != null) { var e = new EventArgs <JsonAtomStringReader, SimpleJson, JsonAtomType>(reader, ret, t); FromJson(this, e); ret = e.Arg2; } } return(ret); }
/// <summary>将指定Json值写入到指定的文本写入流</summary> /// <param name="value"></param> /// <param name="writer"></param> public void To(SimpleJson value, TextWriter writer) { writer.Write(To(value)); }