Exemplo n.º 1
0
        private void ReadDatum(Datum datum, ReadAs?readAs = null)
        {
            if (ReadAsSpecialType(datum, readAs))
            {
                return;
            }
            switch (datum.type)
            {
            case Datum.DatumType.R_NUM:
                SetToken(JsonToken.Float, datum.r_num);
                return;

            case Datum.DatumType.R_STR:
                SetToken(JsonToken.String, datum.r_str);
                return;

            case Datum.DatumType.R_BOOL:
                SetToken(JsonToken.Boolean, datum.r_bool);
                return;

            case Datum.DatumType.R_NULL:
                SetToken(JsonToken.Null);
                return;

            //The datum stores more structure
            case Datum.DatumType.R_ARRAY:
                SetToken(JsonToken.StartArray);
                stack.Push(new DatumReaderToken(datum));
                return;

            case Datum.DatumType.R_OBJECT:
                SetToken(JsonToken.StartObject);
                stack.Push(new DatumReaderToken(datum));
                return;

            default:
                Demand.Require(true, "Unknown handing datum type {0}.", datum.type);
                return;
            }
        }