Преобразовать список<Property> в JObject

Рассмотрим этот код:

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

Я заканчиваю с List<JProperty>,

Есть ли быстрый способ использовать Linq или JSON.NET функцию для преобразования этого List<JProperty> возражать против JObject без создания JObject с нуля в цикле?

1 ответ

Решение

Да, вы можете просто передать список в 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"
}

(The z свойство отсутствует, потому что его значение не является строкой.)

Другие вопросы по тегам