public static JsonLazyDynamicObject Parse(ReadOnlySpan <byte> utf8Json) { JsonObject dom = JsonObject.Parse(utf8Json); var result = new JsonLazyDynamicObject(dom); return(result); }
public static JsonLazyDynamicObject Parse(ReadOnlySpan <byte> utf8Json) { var parser = new JsonParser(utf8Json); JsonObject dom = parser.Parse(); var result = new JsonLazyDynamicObject(dom); return(result); }
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) { if (indexes.Length != 1 || !(indexes[0] is int)) { result = null; return(false); } var index = (int)indexes[0]; if (_dom.Type == JsonValueType.Array) { var resultObject = _dom[index]; switch (resultObject.Type) { case JsonValueType.Number: result = (object)(int)resultObject; break; case JsonValueType.True: result = (object)true; break; case JsonValueType.False: result = (object)false; break; case JsonValueType.Null: result = null; break; case JsonValueType.String: result = (string)resultObject; break; case JsonValueType.Object: result = new JsonLazyDynamicObject(resultObject); break; case JsonValueType.Array: result = new JsonLazyDynamicObject(resultObject); break; default: throw new NotImplementedException(); } return(true); } result = null; return(false); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { if (!_dom.TryGetValue(binder.Name, out JsonObject jsonObject)) { result = default; return(false); } switch (jsonObject.Type) { case JsonValueType.Number: result = (object)(int)jsonObject; break; case JsonValueType.True: result = (object)true; break; case JsonValueType.False: result = (object)false; break; case JsonValueType.Null: result = null; break; case JsonValueType.String: result = (string)jsonObject; break; case JsonValueType.Object: result = new JsonLazyDynamicObject(jsonObject); break; case JsonValueType.Array: result = new JsonLazyDynamicObject(jsonObject); break; default: throw new NotImplementedException(); } return(true); }