public static Parse <T> CreateArrayValue <T>(this Parse <T> parse, JsonObjectBuilder jsonObjectBuilder)
 {
     return(value =>
     {
         ParseResult <T> result = parse(value);
         if (result.Succeeded)
         {
             double decValue;
             var culture = new CultureInfo("de-de");
             bool boolValue;
             if (double.TryParse(result.Result.ToString(), NumberStyles.Number, culture, out decValue))
             {
                 jsonObjectBuilder.AddArrayValue(decValue);
             }
             else if (bool.TryParse(result.Result.ToString(), out boolValue))
             {
                 jsonObjectBuilder.AddArrayValue(boolValue);
             }
             else
             {
                 jsonObjectBuilder.AddArrayValue(result.Result.ToString());
             }
         }
         return result;
     });
 }
        //public static Parse<string> CreateNameSubObject(this Parse<string> parse, JsonObjectBuilder jsonObjectBuilder)
        //{
        //    return value =>
        //        {
        //            ParseResult<string> result = parse(value);
        //            if (result.Succeeded)
        //            {
        //                jsonObjectBuilder.AddNameSubObject(result.Result);
        //            }
        //            return result;
        //        };
        //}

        public static Parse <T> CreateValue <T>(this Parse <T> parse, JsonObjectBuilder jsonObjectBuilder)
        {
            return(value =>
            {
                ParseResult <T> result = parse(value);
                if (result.Succeeded)
                {
                    double decValue;
                    var culture = new CultureInfo("en-gb");
                    bool boolValue;
                    if (double.TryParse(result.Result.ToString(), NumberStyles.Number, culture, out decValue))
                    {
                        jsonObjectBuilder.AddValue(decValue, new JsonNumber(decValue.ToString()));
                    }
                    else if (bool.TryParse(result.Result.ToString(), out boolValue))
                    {
                        jsonObjectBuilder.AddValue(boolValue, new JsonBool(boolValue));
                    }
                    else
                    {
                        var str =
                            result.Result.ToString().Replace("'", "").ToString();
                        jsonObjectBuilder.AddValue(str, new JsonString(str));
                    }
                }
                return result;
            });
        }
Beispiel #3
0
        public string Serialize(JsonObject jsonObject)
        {
            JsonObjectBuilder jsonObjectBuilder = new JsonObjectBuilder();
            StringBuilder     stringBuilder     = new StringBuilder();

            SerializeJsonObject(jsonObject, stringBuilder);
            return(stringBuilder.ToString());
        }
Beispiel #4
0
        public JsonObject Deserialize(string jsonString)
        {
            JsonObjectBuilder jsonObjectBuilder = new JsonObjectBuilder();
            var jsonObject = ParserObject(jsonObjectBuilder);
            var result     = jsonObject(jsonString);

            return(jsonObjectBuilder.MainJsonObject);
        }
        //public static Parse<T> CreateJsonSubObject<T>(this Parse<T> parse, JsonObjectBuilder jsonObjectBuilder)
        //{
        //    return value =>
        //        {
        //            ParseResult<T> result = parse(value);
        //            if (result.Succeeded)
        //            {
        //                jsonObjectBuilder.CreateSubObject(new JsonObject());
        //            }
        //            return result;
        //        };
        //}

        public static Parse <T> EndJsonObject <T>(this Parse <T> parse, JsonObjectBuilder jsonObjectBuilder)
        {
            return(value =>
            {
                ParseResult <T> result = parse(value);
                if (result.Succeeded)
                {
                    jsonObjectBuilder.EndObject();
                }
                return result;
            });
        }
        //public static Parse<string> CreateValueSubObject(this Parse<string> parse, JsonObjectBuilder jsonObjectBuilder)
        //{
        //    return value =>
        //        {
        //            ParseResult<string> result = parse(value);
        //            if (result.Succeeded)
        //            {
        //                double decValue;
        //                var culture = new CultureInfo("en-gb");
        //                bool boolValue;
        //                if (double.TryParse(result.Result.ToString(), NumberStyles.Number, culture, out decValue))
        //                {
        //                    jsonObjectBuilder.AddValueSubObject(decValue);
        //                }
        //                else if (bool.TryParse(result.Result.ToString(), out boolValue))
        //                {
        //                    jsonObjectBuilder.AddValueSubObject(boolValue);
        //                }
        //                else
        //                {
        //                    jsonObjectBuilder.AddValueSubObject(result.Result);
        //                }
        //            }
        //            return result;
        //        };
        //}

        public static Parse <T> CreateArray <T>(this Parse <T> parse, JsonObjectBuilder jsonObjectBuilder)
        {
            return(value =>
            {
                ParseResult <T> result = parse(value);
                if (result.Succeeded)
                {
                    jsonObjectBuilder.AddArray();
                }
                return result;
            });
        }
        //public static Parse<T> EndJsonSubObject<T>(this Parse<T> parse, JsonObjectBuilder jsonObjectBuilder)
        //{
        //    return value =>
        //    {
        //        ParseResult<T> result = parse(value);
        //        if (result.Succeeded)
        //        {
        //            jsonObjectBuilder.EndSubObject();
        //        }
        //        return result;
        //    };
        //}

        public static Parse <string> CreateName(this Parse <string> parse, JsonObjectBuilder jsonObjectBuilder)
        {
            return(value =>
            {
                ParseResult <string> result = parse(value);
                if (result.Succeeded)
                {
                    jsonObjectBuilder.AddName(result.Result);
                }
                return result;
            });
        }
        public static Parse <string> ParserObject(JsonObjectBuilder jsonObjectBuilder)
        {
            var keyStringValuePairObject =
                Parser.StringValue().CreateName(jsonObjectBuilder).Then_(_ => Parser.Literal(":")).
                Then_(_ => Parser.StringValue().CreateValue(jsonObjectBuilder));

            var innerValuePropertyObject =
                Parser.StringValue().CreateArrayValue(jsonObjectBuilder).
                Then_(_ => Parser.Literal(",").Then_(__ => Parser.StringValue().CreateArrayValue(jsonObjectBuilder)));

            var keyStringArrayValueObject =
                Parser.StringValue().CreateName(jsonObjectBuilder).Then_(_ => Parser.Literal(":")).Then_(___ =>
                                                                                                         Parser.Literal("[").CreateArray(jsonObjectBuilder).
                                                                                                         And_(_ => innerValuePropertyObject).And_(_ => Parser.Literal("]")));

            return(Parser.StringValue().CreateName(jsonObjectBuilder).
                   Then_(_ => Parser.Literal(":")).
                   Then_(_ => Parser.Literal("{").CreateJsonObject(jsonObjectBuilder)).
                   Then_(__ => keyStringValuePairObject.Or(keyStringArrayValueObject).Or(ParserObject(jsonObjectBuilder))).
                   Repeat(Parser.Literal(",").
                          And_(_ => keyStringValuePairObject.Or(keyStringArrayValueObject).Or(ParserObject(jsonObjectBuilder)))).
                   Then_(___ => Parser.Literal("}").EndJsonObject(jsonObjectBuilder)));
        }
        public static Parse <string> ParserObjectWithDoubleHighComma(JsonObjectBuilder jsonObjectBuilder)
        {
            var stringParseName = Parser.Literal("\"").
                                  And_(_ => Parser.StringValue().CreateName(jsonObjectBuilder).
                                       And_(__ => Parser.Literal("\"")));

            var parseName = Parser.StringValue().CreateName(jsonObjectBuilder);

            var stringParseValueOrParseName = stringParseName.Or(parseName);

            var stringParseValue = Parser.Literal("\"").
                                   And_(_ => Parser.StringValue().CreateValue(jsonObjectBuilder).
                                        And_(__ => Parser.Literal("\"")));

            var parseValue = Parser.StringValue().CreateValue(jsonObjectBuilder);

            var stringParseValueOrParseValue = stringParseValue.Or(parseValue);

            var keyStringValuePairObject =
                stringParseValueOrParseName.Then_(_ => Parser.Literal(":")).
                Then_(_ => stringParseValueOrParseValue);

            var innerValuePropertyObject = Parser.StringValue().CreateArrayValue(jsonObjectBuilder).
                                           Then_(_ => Parser.Literal(",").Then_(__ => Parser.StringValue().CreateArrayValue(jsonObjectBuilder)));

            var keyStringArrayValueObject =
                Parser.Literal("[").CreateArray(jsonObjectBuilder).
                And_(_ => innerValuePropertyObject).And_(_ => Parser.Literal("]"));

            return(stringParseValueOrParseName.
                   Then_(_ => Parser.Literal(":")).
                   Then_(_ => Parser.Literal("{").CreateJsonObject(jsonObjectBuilder)).
                   Then_(__ => keyStringValuePairObject.Or(keyStringArrayValueObject).Or(ParserObject(jsonObjectBuilder))).
                   Repeat(Parser.Literal(",").
                          And_(_ => keyStringValuePairObject.Or(keyStringArrayValueObject).Or(ParserObject(jsonObjectBuilder)))).
                   Then_(___ => Parser.Literal("}").EndJsonObject(jsonObjectBuilder)));
        }
Beispiel #10
0
        private Parse <string> ParserObject(JsonObjectBuilder jsonObjectBuilder)
        {
            var start = Parser.Literal("{").CreateJsonObject(jsonObjectBuilder);

            var end = Parser.Literal("}").EndJsonObject(jsonObjectBuilder);

            var stringParseName = Parser.Literal("'").
                                  And_(_ => Parser.StringValue().CreateName(jsonObjectBuilder).
                                       And_(__ => Parser.Literal("'")));

            var parseName = Parser.StringValue().CreateName(jsonObjectBuilder);

            var stringParseValueOrParseName = stringParseName.Or(parseName);

            var doubleParserValue = Parser.DecimalString().CreateValue(jsonObjectBuilder);

            var boolParserValue = Parser.BoolString().CreateValue(jsonObjectBuilder);

            var stringParseValue = Parser.Literal("'").
                                   And_(_ => Parser.StringValue().CreateValue(jsonObjectBuilder).
                                        And_(__ => Parser.Literal("'")));

            var parseValue = Parser.StringValue().CreateValue(jsonObjectBuilder);

            var stringParseValueOrParseValue = stringParseValue.Or(parseValue).Or(doubleParserValue);
            //Or(boolParserValue)

            var stringArrayParseValue = Parser.Literal("'").
                                        And_(_ => Parser.StringValue().CreateArrayValue(jsonObjectBuilder).
                                             And_(__ => Parser.Literal("'")));

            var parseArrayValue = Parser.StringValue().CreateArrayValue(jsonObjectBuilder);

            var doubleArrayParserValue = Parser.DecimalString().CreateArrayValue(jsonObjectBuilder);

            //var boolArrayParserValue = Parser.BoolString().CreateArrayValue(jsonObjectBuilder);

            var stringArrayParseValueOrParseValue = stringArrayParseValue.Or(parseArrayValue).Or(doubleArrayParserValue);
            //Or(boolArrayParserValue);

            var keyStringValuePairObject =
                stringParseValueOrParseName.Then_(_ => Parser.Literal(":").Then_(__ => stringParseValueOrParseValue));
            //Then_(_ => stringParseValueOrParseValue);

            var innerValuePropertyObject = stringParseValueOrParseValue.
                                           Then_(_ => Parser.Literal(","));

            var innerArrayValuePropertyObject = stringArrayParseValueOrParseValue.
                                                Then_(_ => Parser.Literal(","));

            var keyStringArrayValueObject = stringParseValueOrParseName.Then_(_ => Parser.Literal(":")).
                                            Then_(__ =>
                                                  Parser.Literal("[").CreateArray(jsonObjectBuilder).
                                                  Repeat(innerArrayValuePropertyObject).Then_(_ => Parser.Literal("]")));

            var keyStringPropertyOrKeyStringArray = keyStringArrayValueObject.Or(keyStringValuePairObject);

            return(keyStringPropertyOrKeyStringArray.
                   Then_(_ => Parser.Literal(":")).
                   Then_(_ => start).
                   Then_(__ => end.Or(keyStringValuePairObject).Or(keyStringArrayValueObject).Or(ParserObject(jsonObjectBuilder))).
                   Repeat(Parser.Literal(",").
                          And_(_ => end.Or(keyStringValuePairObject).Or(keyStringArrayValueObject).Or(ParserObject(jsonObjectBuilder)))).
                   Then_(___ => end));
        }