Ejemplo n.º 1
0
        private static Dictionary <string, object> Parse(string optionsText)
        {
            Debug.Assert(String.IsNullOrEmpty(optionsText) == false);

            bool resolveElements = false;

            optionsText = optionsText.ReplaceRegex(_optionsParserRegex,
                                                   delegate(string match /*, string simpleValue, string stringValue, string elementReference, string separator, string name */) {
                string stringValue      = (string)Arguments.GetArgument(2);
                string elementReference = (string)Arguments.GetArgument(3);
                string nameValue        = (string)Arguments.GetArgument(5);
                if (Script.IsValue(stringValue))
                {
                    // Matches single and double quoted strings
                    // JSON strings are always double quoted, and additionally
                    // escape any double quotes within.

                    return('"' + stringValue.Substr(1, stringValue.Length - 2).Replace("\"", "\\\"") + '"');
                }
                else if (Script.IsValue(elementReference))
                {
                    // ID references require resolution at JSON parse time
                    // Convert them to strings, so they can be parsed as valid JSON first.

                    resolveElements = true;
                    return('"' + elementReference + '"');
                }
                else if (Script.IsValue(nameValue))
                {
                    // Matches a name followed by ":"
                    // In JSON, names must be double quoted

                    return('"' + nameValue.Substr(0, nameValue.Length - 1) + "\":");
                }
                return(match);
            });

            // Finally turn this into a JSON object, by wrapping with curly braces

            string optionsJson = "{" + optionsText + "}";

            JsonParseCallback parseCallback = null;

            if (resolveElements)
            {
                parseCallback = ResolveElementReferences;
            }

            return(Json.ParseData <Dictionary <string, object> >(optionsJson, parseCallback));
        }
Ejemplo n.º 2
0
 public extern static TData ParseData <TData>(string json, JsonParseCallback parseCallback);
Ejemplo n.º 3
0
 /// <summary>
 /// Parses the specified JSON text.
 /// </summary>
 /// <param name="json">The JSON text to be parsed.</param>
 /// <param name="parseCallback">A callback to invoke on each value that is deserialized.</param>
 /// <returns>The deserialized object.</returns>
 public extern static object Parse(string json, JsonParseCallback parseCallback);
Ejemplo n.º 4
0
 public static TData ParseData <TData>(string json, JsonParseCallback parseCallback)
 {
     return(default(TData));
 }
Ejemplo n.º 5
0
 /// <summary>
 /// Parses the specified JSON text.
 /// </summary>
 /// <param name="json">The JSON text to be parsed.</param>
 /// <param name="parseCallback">A callback to invoke on each value that is deserialized.</param>
 /// <returns>The deserialized object.</returns>
 public static object Parse(string json, JsonParseCallback parseCallback)
 {
     return(null);
 }