Преобразовать список<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
свойство отсутствует, потому что его значение не является строкой.)