C# 使用lambda的JObject toDictionary()只提供值,而不提供键
我试图将JObject中存储的键值对JSON列表转换为C#字典。我差一点就被卡住了C# 使用lambda的JObject toDictionary()只提供值,而不提供键,c#,json,lambda,json.net,C#,Json,Lambda,Json.net,我试图将JObject中存储的键值对JSON列表转换为C#字典。我差一点就被卡住了 Newtonsoft.Json.Linq.JObject jContainer = new Newtonsoft.Json.Linq.JObject(); Newtonsoft.Json.Linq.JObject jCodes = new Newtonsoft.Json.Linq.JObject(); jCodes.Add("UJ2W", "12345"); jCodes
Newtonsoft.Json.Linq.JObject jContainer = new Newtonsoft.Json.Linq.JObject();
Newtonsoft.Json.Linq.JObject jCodes = new Newtonsoft.Json.Linq.JObject();
jCodes.Add("UJ2W", "12345");
jCodes.Add("T62Q", "12346");
jCodes.Add("8I4D", "12347");
jCodes.Add("T45G", "12348");
jCodes.Add("Q91B", "12349");
jContainer.Add("codes", jCodes);
jContainer.Add("company", "Some Company");
jContainer.Add("log", "URL to logo");
Dictionary<string, string> dCodeTranslation = jContainer["codes"]
.ToDictionary(k => (string)k, v => (string)v);
而不是
UJ2W - 12345
T62Q - 12346
8I4D - 12347
T45G - 12348
Q91B - 12349
将项目强制转换为
JProperty
可使您检索其名称
和值
:
var dCodeTranslation = jContainer["codes"].ToDictionary(
k => { return ((JProperty)k).Name; },
v => { return (string)((JProperty)v).Value; });
//output:
//UJ2W - 12345
//T62Q - 12346
//8I4D - 12347
//T45G - 12348
//Q91B - 12349
但是,您可能需要考虑
ToLookup
,以防每个键都有几个值非常感谢!这解决了我的问题!在我的情况下,我知道我总是会得到一个值的每一个关键,但谢谢你的建议!
var dCodeTranslation = jContainer["codes"].ToDictionary(
k => { return ((JProperty)k).Name; },
v => { return (string)((JProperty)v).Value; });
//output:
//UJ2W - 12345
//T62Q - 12346
//8I4D - 12347
//T45G - 12348
//Q91B - 12349