将 List<Property> 转换为 JObject
Convert List<Property> To JObject
考虑这段代码:
var joWork = ((JObject) x).Properties()
.Where(p => p.Value.Type == JTokenType.String).ToList();
我得到了 List<JProperty>
。
是否有使用 Linq 或 JSON.NET 函数快速将 List<JProperty>
对象转换为 JObject 而无需在循环中从头开始构建 JObject 的方法?
是的,您可以将列表传递给 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
属性,因为它的值不是字符串。)
考虑这段代码:
var joWork = ((JObject) x).Properties()
.Where(p => p.Value.Type == JTokenType.String).ToList();
我得到了 List<JProperty>
。
是否有使用 Linq 或 JSON.NET 函数快速将 List<JProperty>
对象转换为 JObject 而无需在循环中从头开始构建 JObject 的方法?
是的,您可以将列表传递给 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
属性,因为它的值不是字符串。)