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()); } }