Exemplo n.º 1
0
        public static JsonLazyDynamicObject Parse(ReadOnlySpan <byte> utf8Json)
        {
            JsonObject dom    = JsonObject.Parse(utf8Json);
            var        result = new JsonLazyDynamicObject(dom);

            return(result);
        }
Exemplo n.º 2
0
        public static JsonLazyDynamicObject Parse(ReadOnlySpan <byte> utf8Json)
        {
            var        parser = new JsonParser(utf8Json);
            JsonObject dom    = parser.Parse();
            var        result = new JsonLazyDynamicObject(dom);

            return(result);
        }
Exemplo n.º 3
0
        public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
        {
            if (indexes.Length != 1 || !(indexes[0] is int))
            {
                result = null;
                return(false);
            }

            var index = (int)indexes[0];

            if (_dom.Type == JsonValueType.Array)
            {
                var resultObject = _dom[index];

                switch (resultObject.Type)
                {
                case JsonValueType.Number:
                    result = (object)(int)resultObject;
                    break;

                case JsonValueType.True:
                    result = (object)true;
                    break;

                case JsonValueType.False:
                    result = (object)false;
                    break;

                case JsonValueType.Null:
                    result = null;
                    break;

                case JsonValueType.String:
                    result = (string)resultObject;
                    break;

                case JsonValueType.Object:
                    result = new JsonLazyDynamicObject(resultObject);
                    break;

                case JsonValueType.Array:
                    result = new JsonLazyDynamicObject(resultObject);
                    break;

                default:
                    throw new NotImplementedException();
                }
                return(true);
            }

            result = null;
            return(false);
        }
Exemplo n.º 4
0
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            if (!_dom.TryGetValue(binder.Name, out JsonObject jsonObject))
            {
                result = default;
                return(false);
            }

            switch (jsonObject.Type)
            {
            case JsonValueType.Number:
                result = (object)(int)jsonObject;
                break;

            case JsonValueType.True:
                result = (object)true;
                break;

            case JsonValueType.False:
                result = (object)false;
                break;

            case JsonValueType.Null:
                result = null;
                break;

            case JsonValueType.String:
                result = (string)jsonObject;
                break;

            case JsonValueType.Object:
                result = new JsonLazyDynamicObject(jsonObject);
                break;

            case JsonValueType.Array:
                result = new JsonLazyDynamicObject(jsonObject);
                break;

            default:
                throw new NotImplementedException();
            }

            return(true);
        }