web-dev-qa-db-ja.com

net-core 2.0でJSON文字列を手動で解析する方法

私は次の構造を持つjson文字列を持っています

{
    "resource": "user",
    "method": "create",
    "fields": {
        "name": "John",
        "surname: "Smith",
        "email": "[email protected]"
    }
}

fields内のキーは可変であり、事前にそれらを知らないことを意味します

そのため、json文字列をオブジェクトに逆シリアル化する代わりに、jsonをトラバースして、ディクショナリなどのfields内のプロパティを取得する必要があります。

Json.NETライブラリについて聞いたところ、動的jsonを解析する機能はありますが、ネットコアに既に含まれているかどうかはわかりません。

Net-core 2.0でそれを達成するための標準的/最も簡単な方法は何でしょうか。コード例をいただければ幸いです。

11
opensas

はい。 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);
 }
25
Jaya

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の例

6
Matjaž Drolc
var serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });
dynamic jsonObject = serializer.Deserialize(jsonString, typeof(Example));