public static object ReadValue(System.Text.Json.JsonElement elem) { if (elem.ValueKind == System.Text.Json.JsonValueKind.Object) { KeyValue[] vals = elem.EnumerateObject().ToList().SelectMany(v => DeSerializeOne(v)).ToArray(); KeyValues valv = new KeyValues(); valv.AddRange(vals); return(valv); } else if (elem.ValueKind == System.Text.Json.JsonValueKind.Array) { // déja géré par DeSerializeOne //KeyValue[] vals = elem.Value.EnumerateArray().ToList().Select(v => DeSerializeOne(v)).ToArray(); //KeyValues valv = new KeyValues(); valv.AddRange(vals); //retour = new KeyValue(realname, valv); return(null); } else if (elem.ValueKind == System.Text.Json.JsonValueKind.Null || elem.ValueKind == System.Text.Json.JsonValueKind.Undefined) { return(null); } else if (elem.ValueKind == System.Text.Json.JsonValueKind.False) { return(false); } else if (elem.ValueKind == System.Text.Json.JsonValueKind.True) { return(true); } else if (elem.ValueKind == System.Text.Json.JsonValueKind.Number) { int i = 0; if (elem.TryGetInt32(out i)) { return(i); } long li = 0; if (elem.TryGetInt64(out li)) { return(li); } double di = 0; if (elem.TryGetDouble(out di)) { return(di); } return(elem.GetRawText()); // !!! } else if (elem.ValueKind == System.Text.Json.JsonValueKind.String) { return(elem.GetString()); } else { return(elem.GetRawText()); } }
public static _JsonObject CreateFrom(JSONELEMENT dict) { if (dict.ValueKind != JsonValueKind.Object) { throw new ArgumentException("Must be JsonValueKind.Object", nameof(dict)); } JSONPROPERTY convert(JsonProperty property) { var value = _JsonStaticUtils.Deserialize(property.Value); return(new JSONPROPERTY(property.Name, value)); } using (var entries = dict.EnumerateObject()) { return(new _JsonObject(dict.EnumerateObject().Select(convert))); } }
internal JsonDictionary(JSONELEMENT element) { if (element.ValueKind != JsonValueKind.Object) { throw new ArgumentException("Must be JsonValueKind.Object", nameof(element)); } foreach (var item in element.EnumerateObject()) { this[item.Name] = JsonValue.DeepClone(item.Value); } }