【发布时间】:2020-07-06 19:28:56
【问题描述】:
考虑以下 json 文件
{
"test": {
"CR": {
"name": "Car"
},
"BK": {
"name": "Bike"
}
}
如何将匿名类型的使用与 LINQ to JSON 结合起来创建键值对
CR Car
BK Bike
通过使用 LINQ to JSON?
我尝试了以下简单的启动方法,但它甚至没有编译
JObject o = JObject.Parse(s);
var pairs = o["test"].Select(x => x.Value).ToList();
更准确地说是这个伪代码
var pairs = o["test"].Select( new { key = x => x.firstOrDefault().Name, value = x => x.Value}).ToList();
【问题讨论】:
-
您应该按名称访问
test属性或转换为JProperty -
@OlivierRogier 我不明白如何展示如何使用 JSON 可以回答这个“在运行时创建匿名类型”的问题......除非 OP 澄清他们实际想要什么去实现。
-
@OrElse 你熟悉 lambda 表达式吗?我建议你先看看它的基础知识并编译你的代码
-
@OlivierRogier 请问你为什么关闭这个问题?
-
您可以随时使用 LINQ to JSON 在原始
JObject的基础上创建一个新的JObject,即var pairs = new JObject( ((JObject)o["test"]).Properties().Select(p => new JProperty(p.Name, p.Value["name"])) );。或者,如果您更喜欢字典,那么var dictionary = ((JObject)o["test"]).Properties().ToDictionary(p => p.Name, p => (string)p.Value["name"]);。见:dotnetfiddle.net/5fnn5E
标签: c# json linq json.net linq-to-json