web-dev-qa-db-fra.com

Comment lisez-vous une valeur simple de certains json en utilisant System.Text.Json?

J'ai ce json

{"id":"48e86841-f62c-42c9-ae20-b54ba8c35d6d"}

Comment obtenir le 48e86841-f62c-42c9-ae20-b54ba8c35d6d en dehors de ça? Tous les exemples que je peux trouver montrent faire quelque chose comme

var o = System.Text.Json.JsonSerializer.Deserialize<some-type>(json);
o.id // <- here's the ID!

Mais je n'ai pas de type qui correspond à cette définition et je ne veux pas en créer une. J'ai essayé de désérialiser en dynamique mais je n'ai pas réussi à le faire fonctionner.

var result = System.Text.Json.JsonSerializer.Deserialize<dynamic>(json);
result.id // <-- An exception of type 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' occurred in System.Linq.Expressions.dll but was not handled in user code: ''System.Text.Json.JsonElement' does not contain a definition for 'id''

Quelqu'un peut-il donner des suggestions?


éditer:

Je viens de comprendre que je peux le faire:

Guid id = System.Text.Json.JsonDocument.Parse(json).RootElement.GetProperty("id").GetGuid();

Cela fonctionne - mais y a-t-il une meilleure façon?

7
Nick

mise à jour vers .NET Core 3.1 pour prendre en charge

public static dynamic FromJson(this string json, JsonSerializerOptions options = null)
    {
        if (string.IsNullOrEmpty(json))
            return null;

        try
        {
            return JsonSerializer.Deserialize<ExpandoObject>(json, options);
        }
        catch
        {
            return null;
        }
    }
0
ruson