Ejemplo n.º 1
0
        public static IList <T> ProcessArrayProperty <T>(this JsonElement element, string propertyName, JsonParserContext context,
                                                         Func <JsonElement, JsonParserContext, T> itemParser)
        {
            Debug.Assert(context != null);
            Debug.Assert(element.ValueKind == JsonValueKind.Array);

            context.EnterScope(propertyName);

            IList <T> includes = new List <T>();
            int       index    = 0;

            foreach (var item in element.EnumerateArray())
            {
                context.EnterScope(index);

                T builtItem = itemParser(item, context);

                includes.Add(builtItem);

                context.LeaveScope(index);

                index++;
            }

            context.LeaveScope(propertyName);
            return(includes);
        }
Ejemplo n.º 2
0
        public static T ProcessRequiredProperty <T>(this JsonElement element,
                                                    string propertyName,
                                                    JsonParserContext context,
                                                    Func <JsonElement, JsonParserContext, T> propertyParser)
        {
            Debug.Assert(element.ValueKind == JsonValueKind.Object);

            T value = default(T);

            if (element.TryGetProperty(propertyName, out JsonElement propertyValue))
            {
                context.EnterScope(propertyName);

                value = propertyParser(propertyValue, context);

                context.LeaveScope(propertyName);
            }
            else
            {
                context.ReportError(EdmErrorCode.MissingRequiredProperty,
                                    Strings.CsdlJsonParser_MissingRequiredPropertyInObject(propertyName, context.Path));
            }

            return(value);
        }
Ejemplo n.º 3
0
        public static T ProcessProperty <T>(this JsonElement propertyValue, string propertyName, JsonParserContext context,
                                            Func <JsonElement, JsonParserContext, T> valueParser)
        {
            Debug.Assert(context != null);

            context.EnterScope(propertyName);

            T value = valueParser(propertyValue, context);

            context.LeaveScope(propertyName);
            return(value);
        }
Ejemplo n.º 4
0
        public static T ProcessItem <T>(this JsonElement element, int index, JsonParserContext context,
                                        Func <JsonElement, JsonParserContext, T> parser)
        {
            Debug.Assert(element.ValueKind == JsonValueKind.Array);

            context.EnterScope(index);

            T ret = parser(element[index], context);

            context.LeaveScope();

            return(ret);
        }
Ejemplo n.º 5
0
        public static void ParseAsObject(this JsonElement element, JsonParserContext context,
                                         Action <string, JsonElement> propertyParser)
        {
            Debug.Assert(context != null);
            Debug.Assert(element.ValueKind == JsonValueKind.Object);

            foreach (var propertyItem in element.EnumerateObject())
            {
                context.EnterScope(propertyItem.Name);

                propertyParser(propertyItem.Name, propertyItem.Value);

                context.LeaveScope(propertyItem.Name);
            }
        }
Ejemplo n.º 6
0
        public static T ParseOptionalProperty <T>(this JsonElement element, string propertyName, JsonParserContext context,
                                                  Func <JsonElement, JsonParserContext, T> parser)
        {
            if (element.ValueKind == JsonValueKind.Object &&
                element.TryGetProperty(propertyName, out JsonElement propertyValue))
            {
                context.EnterScope(propertyName);

                T ret = parser(propertyValue, context);

                context.LeaveScope(propertyName);
                return(ret);
            }

            return(default(T));
        }