web-dev-qa-db-ja.com

System.Text.Jsonを使用して、jsonから単純な値をどのように読み取りますか?

私はこのjsonを持っています

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

どうすれば48e86841-f62c-42c9-ae20-b54ba8c35d6dを取得できますか?私が見つけることができるすべての例は、次のようなことをするショーです

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

しかし、この定義に合うタイプがなく、作成したくありません。動的に逆シリアル化しようとしましたが、それを機能させることができませんでした。

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''

誰かが何か提案を与えることはできますか?


編集:

私はこれを行うことができると思いました:

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

これは機能しますが、もっと良い方法はありますか?

7
Nick

.NET Core 3.1に更新してサポートする

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