C# 需要使用C阅读Json文件的帮助吗#

C# 需要使用C阅读Json文件的帮助吗#,c#,json,C#,Json,我正在使用json文件,并尝试使用C#进行读取 在这里,我想检查是否检索到叶节点值,然后执行一个条件,即Company->ABC->Address->“123” 123是叶 国家->国家1->“XYZ” XYZ是这里的叶子 string jsonFilePath = "D:\\ProjectCode1\\catalogJsonData.json"; string json = File.ReadAllText(jsonFilePath); Dictionary<string, obj

我正在使用json文件,并尝试使用C#进行读取

在这里,我想检查是否检索到叶节点值,然后执行一个条件,即Company->ABC->Address->“123” 123是叶

国家->国家1->“XYZ”

XYZ是这里的叶子

string jsonFilePath = "D:\\ProjectCode1\\catalogJsonData.json";   
string json = File.ReadAllText(jsonFilePath);
Dictionary<string, object> json_Dictionary = (new JavaScriptSerializer()).Deserialize<Dictionary<string,    object>>(json);

 foreach (var item in json_Dictionary)
  {
   // parse here
      Console.WriteLine("{0} {1}", item.Value);
      await context.PostAsync(item.Key);
  }
string jsonFilePath=“D:\\ProjectCode1\\catalogJsonData.json”;
字符串json=File.ReadAllText(jsonFilePath);
字典json_Dictionary=(新的JavaScriptSerializer())。反序列化(json);
foreach(json_字典中的var项)
{
//在这里解析
WriteLine(“{0}{1}”,item.Value);
wait context.PostAsync(item.Key);
}

上面的代码没有为item.value或item.Key打印任何值

我建议创建一个模型类,您的json可以使用Newtonsoft.json NuGet反序列化。我还清理了您的Json示例

Json:

代码

classjsonmodel
{
公共IDictionary公司{get;set;}
公共IDictionary国家{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
字符串json=File.ReadAllText(“sample.json”);
var jsonModel=JsonConvert.DeserializeObject(json);
Console.WriteLine(“--companys--”);
foreach(jsonModel.Company中的var companyDictionary)
{
foreach(var company in companyDictionary.Value)
{
Console.WriteLine($“{company.Key}:{company.Value}”);
}
}
Console.WriteLine();
Console.WriteLine(“--Countries--”);
foreach(jsonModel.country中的var国家)
{
Console.WriteLine($“{country.Key}:{country.Value}”);
}
}
}
输出:


我建议创建一个模型类,您的json可以使用Newtonsoft.json NuGet反序列化。我还清理了您的Json示例

Json:

代码

classjsonmodel
{
公共IDictionary公司{get;set;}
公共IDictionary国家{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
字符串json=File.ReadAllText(“sample.json”);
var jsonModel=JsonConvert.DeserializeObject(json);
Console.WriteLine(“--companys--”);
foreach(jsonModel.Company中的var companyDictionary)
{
foreach(var company in companyDictionary.Value)
{
Console.WriteLine($“{company.Key}:{company.Value}”);
}
}
Console.WriteLine();
Console.WriteLine(“--Countries--”);
foreach(jsonModel.country中的var国家)
{
Console.WriteLine($“{country.Key}:{country.Value}”);
}
}
}
输出:


Newtonsoft JSONA您是否使用此表单或解析文件,因为这是您知道的唯一方法,或者是否有其他原因?因为
json
无效,它会导致所有RFC失败<代码>尾随逗号出现@Franck我必须以类似的方式进行映射,但我不确定语法和RFC。一个节点的最大嵌套级别可以是3,最小嵌套级别可以是1。@MakeinIndainSpire只是如果您知道该格式,您只需创建一个具有正确属性的类,并将该类用作反序列化对象,它就可以顺利填充。综上所述,Codexer提出了一个很好的观点,因为
json
甚至是无效的。在一些地方有多余的逗号是没有意义的。如果这是正确的,那么使用类结构解析就很容易了。Newtonsoft JSONA您是否使用此表单或解析文件,因为这是您知道的唯一方法,或者是否有其他原因?因为
json
无效,它会使所有RFC失败<代码>尾随逗号出现@Franck我必须以类似的方式进行映射,但我不确定语法和RFC。一个节点的最大嵌套级别可以是3,最小嵌套级别可以是1。@MakeinIndainSpire只是如果您知道该格式,您只需创建一个具有正确属性的类,并将该类用作反序列化对象,它就可以顺利填充。综上所述,Codexer提出了一个很好的观点,因为
json
甚至是无效的。在一些地方有多余的逗号是没有意义的。如果这是正确的,那么使用类结构进行解析就很容易了。
string jsonFilePath = "D:\\ProjectCode1\\catalogJsonData.json";   
string json = File.ReadAllText(jsonFilePath);
Dictionary<string, object> json_Dictionary = (new JavaScriptSerializer()).Deserialize<Dictionary<string,    object>>(json);

 foreach (var item in json_Dictionary)
  {
   // parse here
      Console.WriteLine("{0} {1}", item.Value);
      await context.PostAsync(item.Key);
  }
{
  "Company": {
    "ABC": {
      "ADDRESS": "123 STREET",
      "DEF": "ADDRESS 567"
    }
  },
  "Country": {
    "Country1": "XYZ",
    "Country2": "ADG"
  }
}
class JsonModel
{
    public IDictionary<string, IDictionary<string, string>> Company { get; set; }
    public IDictionary<string, string> Country { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        string json = File.ReadAllText("sample.json");
        var jsonModel = JsonConvert.DeserializeObject<JsonModel>(json);
        
        Console.WriteLine("-- Companies-- ");

        foreach(var companyDictionary in jsonModel.Company)
        {
            foreach(var company in companyDictionary.Value)
            {
                Console.WriteLine($"{company.Key}:{company.Value}");
            }
        }

        Console.WriteLine();
        Console.WriteLine("-- Countries --");

        foreach (var country in jsonModel.Country)
        {
            Console.WriteLine($"{country.Key}:{country.Value}");
        }
    }
}