protected Value AsValueJs(Value data) { switch (_tlast) { case JsToken.String: data.String = AtString(); break; case JsToken.Int: data.Bigint = GetLongJs(); break; case JsToken.Number: data.Number = double.Parse(AtString(), System.Globalization.NumberStyles.Float); break; case JsToken.False: data.Bool = false; break; case JsToken.True: data.Bool = true; break; case JsToken.Null: data.ClearKind(); break; case JsToken.ObjectStart: data.Members = AsStructJs(new Struct()); break; case JsToken.ArrayStart: var list = new ListValue(); for (GetValue(); _tlast != JsToken.ArrayEnd;) { AsValueJs(list.AddValues(new Value())); if ((_tlast = Next()) == JsToken.Comma) GetValue(); else if (_tlast != JsToken.ArrayEnd && (int)_tlast < (int)JsToken.ObjectStart) Expected("value"); } data.Elements = list; break; default: Expected("json data element"); break; } return data; }