Exemple #1
0
        /// <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);
        }
Exemple #2
0
 /// <summary>将指定Json值写入到指定的文本写入流</summary>
 /// <param name="value"></param>
 /// <param name="writer"></param>
 public void To(SimpleJson value, TextWriter writer)
 {
     writer.Write(To(value));
 }