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)); }
public extern static TData ParseData <TData>(string json, JsonParseCallback parseCallback);
/// <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);
public static TData ParseData <TData>(string json, JsonParseCallback parseCallback) { return(default(TData)); }
/// <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); }