私は次の構造を持つjson文字列を持っています
{
"resource": "user",
"method": "create",
"fields": {
"name": "John",
"surname: "Smith",
"email": "[email protected]"
}
}
fields内のキーは可変であり、事前にそれらを知らないことを意味します
そのため、json文字列をオブジェクトに逆シリアル化する代わりに、jsonをトラバースして、ディクショナリなどのfields内のプロパティを取得する必要があります。
Json.NETライブラリについて聞いたところ、動的jsonを解析する機能はありますが、ネットコアに既に含まれているかどうかはわかりません。
Net-core 2.0でそれを達成するための標準的/最も簡単な方法は何でしょうか。コード例をいただければ幸いです。
はい。 Newtonsoft.jsonパッケージを.netコアプロジェクトに追加できます。また、動的jsonオブジェクトを照会するには、ライブラリが提供するJObject
オブジェクトを使用して、jsonを動的オブジェクトに解析できます。これがドキュメントの link です。
あなたのjsonサンプルを考えると、それはこのように見えるかもしれません
var resource = JObject.Parse(json);
foreach (var property in resource.fields.Properties())
{
Console.WriteLine("{0} - {1}", property.Name, property.Value);
}
Json.NET は、.NETオブジェクトをシリアル化する際の重要なライブラリです。ただし、オブジェクトの構造が静的でない場合、System.Json名前空間のAPIの使用はより簡単になります。 System.Jsonは、次のようにNuGetからパッケージをインストールすることにより、.NET Core 2.0で使用できます。
dotnet add package System.Json --version 4.4.0
System.Json名前空間からAPIを使用する方法に関する素敵なチュートリアルを次に示します。 。NETでJSONを操作する– Silverlightの例
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));