【问题标题】:How to parse this jsonobject in c# [duplicate]如何在c#中解析这个jsonobject [重复]
【发布时间】:2020-09-03 11:02:16
【问题描述】:

我有一个json 文件,格式如下:

    {
  "1": {
    "additional text": "Info about ..",
    "description": "you can find info about ... here",
    "link": "https:.."
  },
  "2": {
    "additional text": "Info:",
    "description": "Details about ...",
    "link": "https://..."
  }
}

我现在拥有的是

dynamic d = JObject.Parse(response.Content.ToString());

通过这段代码,我得到了整个 json。我不知道如何获取1 的内容及其嵌套元素。

同时,我也尝试过

String rootObjects = JsonConvert.DeserializeObject<String>(response.Content.ToString());

但我又遇到了同样的问题,我无法获取每个元素的内容。

【问题讨论】:

  • 作为字典 ... 已经问了多次
  • 当你知道你收到了什么时,不要使用dynamic - 在你的情况下,Dictionary&lt;int, YourClass&gt; 应该这样做。

标签: c# json


【解决方案1】:
public class JsonContent {

    [JsonProperty("additional text")]
    public string AdditionalText{get;set;}

    [JsonProperty("description")]
    public string Description{get;set;}

    [JsonProperty("link")]
    public string Link{get;set;}
}


using System;
using System.Linq;
using System.Collections.Generic;
using Newtonsoft.Json;
                
public class Program
{
    public static void Main()
    {
        string json = "{\"1\": {\"additional text\": \"Info about ..\", \"description\": \"you can find info about ... here\", \"link\": \"https:..\"}, \"2\": {\"additional text\": \"Info:\", \"description\": \"Details about ...\", \"link\": \"https://...\"}}";
        Dictionary<int, JsonContent> dictionary = JsonConvert.DeserializeObject<Dictionary<int, JsonContent>>(json);
    
        foreach(var item in dictionary) {
            var key = item.Key;
            var content = item.Value;
            Console.WriteLine(String.Format("Key: {0}", key));
            Console.WriteLine(String.Format("AdditionalText: {0}", content.AdditionalText));
            Console.WriteLine(String.Format("Description: {0}", content.Description));
            Console.WriteLine(String.Format("Link: {0}", content.Link));
            Console.WriteLine(string.Empty);
        }
    }
}

您需要安装 Newtonsoft.Json NuGet 包。

【讨论】:

  • Dictionary&lt;int, JsonContent&gt; 应该是 Dictionary&lt;string, JsonContent&gt;。否则它不会解析 JSON 字符串。我刚刚用 .NET Core 的JsonSerializer 对其进行了测试。
  • 使用 int 完全没问题。看看 - dotnetfiddle.net/MmCidf
猜你喜欢
  • 1970-01-01
  • 2014-11-22
  • 2015-07-05
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 2017-04-12
  • 2018-06-17
相关资源
最近更新 更多