C#反序列化Json未知键

标签 c# json visual-studio json.net

我有这个 JSON,我必须反序列化它:

{
  "homepage": "http://files.minecraftforge.net/maven/net/minecraftforge/forge/",
  "promos": {
    "1.10-latest": "12.18.0.2000",
    "1.10.2-latest": "12.18.1.2014",
    "1.10.2-recommended": "12.18.1.2011",
    "1.5.2-latest": "7.8.1.738",
    "1.5.2-recommended": "7.8.1.737",
    "1.6.1-latest": "8.9.0.775",
    "1.6.2-latest": "9.10.1.871",
    "1.6.2-recommended": "9.10.1.871",
    "1.6.3-latest": "9.11.0.878",
    "1.6.4-latest": "9.11.1.1345",
    "1.6.4-recommended": "9.11.1.1345",
    "1.7.10-latest": "10.13.4.1614",
    "1.7.10-latest-1.7.10": "10.13.2.1343",
    "1.7.10-recommended": "10.13.4.1558",
    "1.7.2-latest": "10.12.2.1147",
    "1.7.2-recommended": "10.12.2.1121",
    "1.8-latest": "11.14.4.1577",
    "1.8-recommended": "11.14.4.1563",
    "1.8.8-latest": "11.15.0.1655",
    "1.8.9-latest": "11.15.1.1902",
    "1.8.9-recommended": "11.15.1.1722",
    "1.9-latest": "12.16.0.1942",
    "1.9-recommended": "12.16.1.1887",
    "1.9.4-latest": "12.17.0.1990",
    "1.9.4-recommended": "12.17.0.1976",
    "latest": "12.18.1.2014",
    "latest-1.7.10": "10.13.2.1343",
    "recommended": "12.18.1.2011"
  }
}

在这个网站上搜索了很多,我得出了这段代码:

dynamic json = JsonConvert.DeserializeObject<Dictionary<string, string>>(data);
foreach (KeyValuePair<string, string> entry in json["promos"])
{
    MessageBox.Show(entry.Key);
    MessageBox.Show(entry.Value);
}

我需要从那个 Json 中获取 Key 和 Value,但是这段代码表明第 3 行 pos 13 上有一个意外的字符。 我尝试了很多不同的方式,但我无法同时获得值(value)和 key 。使用一些代码,我只得到了键,而使用其他一些代码,我只得到了值。你能解释一下如何同时获取值和 key 吗?

最佳答案

可以直接将json解析为JObject,将节点“promos”转为Dictionary

var json = JObject.Parse(data);
var promos = json["promos"].ToObject<Dictionary<string, string>>();
foreach (var entry in promos)
{
    MessageBox.Show(entry.Key);
    MessageBox.Show(entry.Value);
}

关于C#反序列化Json未知键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38411344/

相关文章:

c# - 去除word中两个或多个空格之间的空白

c# - 将 JSON 反序列化为多个属性

c# - 为什么我的命名空间引用在 Visual Studio 中不断中断?

wpf - 如何修复 Visual Studio 2010 中的架构/命名空间错误? (WPF/XAML)

c# - 使用 SevenSharpZip 附加流

c# - FIle.ReadAll***Async/WriteAll***Async/AppendAll***Async 方法在哪里?

c# - 使用 AJAX 或 ASP.NET 进行异步调用?

json - PowerShell形成格式正确的json以进行日历输入

json - ktor 为某些数据类抛出 NoTransformationFoundException

c++ - Windows 编译器上的 timespec