3

次のコードを検討してください。

var joWork = ((JObject) x).Properties()
    .Where(p => p.Value.Type == JTokenType.String).ToList();

私はで終わるList<JProperty>

Linq または JSON.NET 関数を使用してList<JProperty>、ループ内で JObject をゼロから構築することなく、そのオブジェクトを JObject に変換する簡単な方法はありますか?

4

1 に答える 1

12

そうです、リストをJObjectコンストラクターに渡すだけで、残りは Json.NET が行います。次に例を示します。

using System;
using System.Linq;
using Newtonsoft.Json.Linq;

public class Test
{
    static void Main()
    {
        JObject original = JObject.Parse("{ \"x\": \"a\", \"y\": \"b\", \"z\": 1 }");
        var properties = original
            .Properties()
            .Where(p => p.Value.Type == JTokenType.String)
            .ToList();

        var recreated = new JObject(properties);
        Console.WriteLine(recreated);
    }
}

出力:

{
  "x": "a",
  "y": "b"
}

(z値が文字列ではないため、プロパティがありません。)

于 2016-11-09T19:41:32.407 に答える