12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using Jint.Native.Object;
- using Jint.Runtime.Interop;
- namespace Jint.Native.Json
- {
- public sealed class JsonInstance : ObjectInstance
- {
- private readonly Engine _engine;
- private JsonInstance(Engine engine)
- : base(engine)
- {
- _engine = engine;
- Extensible = true;
- }
- public override string Class
- {
- get
- {
- return "JSON";
- }
- }
- public static JsonInstance CreateJsonObject(Engine engine)
- {
- var json = new JsonInstance(engine);
- return json;
- }
- public void Configure()
- {
- FastAddProperty("parse", new ClrFunctionInstance<JsonInstance, object>(Engine, Parse), true, false, true);
- FastAddProperty("stringify", new ClrFunctionInstance<JsonInstance, object>(Engine, Stringify), true, false, true);
- }
- public object Parse(JsonInstance thisObject, object[] arguments)
- {
- var parser = new JsonParser(_engine);
- return parser.Parse(arguments[0].ToString());
- }
- public object Stringify(JsonInstance thisObject, object[] arguments)
- {
- object
- value = Undefined.Instance,
- replacer = Undefined.Instance,
- space = Undefined.Instance;
- if (arguments.Length > 2)
- {
- space = arguments[2];
- }
- if (arguments.Length > 1)
- {
- replacer = arguments[1];
- }
- if (arguments.Length > 0)
- {
- value = arguments[0];
- }
- var serializer = new JsonSerializer(_engine);
- return serializer.Serialize(value, replacer, space);
- }
- }
- }
|