json - この jsonobject を C# で解析する方法

okwaves2024-01-25  11

この質問にはすでに答えがあります: C#でJson文字列を解析する

(答えは5つ)

3 年前

に閉店しました。

次の形式の 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());

しかし、やはり各要素の内容を取得できないという同じ問題が発生します。

2

辞書として ... すでに複数回質問されています

– セルビン

2020 年 9 月 3 日 11:03

2

受信した内容がわかっている場合は、dynamic を使用しないでください - あなたの場合は辞書です<int, YourClass>そうすべきです。

– 平和を再び素晴らしいものにしましょう

2020 年 9 月 3 日 11:08



------------------------

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 パッケージをインストールする必要があります。

2

辞書<int, JsonContent> Dictionary である必要があります。そうしないと、JSON 文字列が解析されません。 .NET Core の JsonSerializer でテストしました。

– ンドガク

2020 年 9 月 3 日 11:42

int を使用してもまったく問題ありません。見てください - dotnetfiddle.net/MmCidf

– カウサール・ハミッド

2020 年 9 月 3 日 11:45

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。