【问题标题】:Is there possible to fetch json.net object like this?有可能像这样获取 json.net 对象吗?
【发布时间】:2020-08-28 13:38:25
【问题描述】:

我有这个 json 文件,我想处理每个对象。

所以 foreach 正在进行中,但甚至从堆栈中尝试了其中许多,但它没有将这些对象获取到 i

任何想法出了什么问题? 我的灵感来自thread

dynamic stuff = JsonConvert.DeserializeObject(File.ReadAllText(@"C:\Users\Paysami\Desktop\ccc\test.json"));
foreach (var i in stuff)
{
    //Console.WriteLine("{0} {1} {2} {3} {4} {5}\n", i.test1, i.test2, i.test3, i.test4, i.test5, i.test6);
    List<string> projectList = new List<string> { i.test1, i.test2, i.test3, i.test4, i.test5, i.test6 };
    foreach (var x in projectList)
    {
        Debug.WriteLine(x.ToString());
    }
}

【问题讨论】:

  • 嗨@Paysami,如果您创建minimal reproducible example,那就太好了
  • 请不要通过图片分享代码。请修改您的问题以包含示例 json。也请尝试改写您的问题/问题。很难理解你真正想要什么。

标签: c# asp.net json.net


【解决方案1】:

您的 json 不包含任何数组,您不能使用 foreach 来读取它。 您应该首先将您的 json 反序列化为一个类,然后使用反序列化的数据。

public class Json
{
    public JsonObject Object1 { get; set; }

    public JsonObject Object2 { get; set; }

    public JsonObject Object3 { get; set; }
}

public class JsonObject
{
    public string Test1 { get; set; }
    public string Test2 { get; set; }
    public string Test3 { get; set; }
    public string Test4 { get; set; }
    public string Test5 { get; set; }
    public string Test6 { get; set; }
}

internal class Program
{
    private static void Main(string[] args)
    {
        var staff = JsonConvert.DeserializeObject<Json>(File.ReadAllText(@"jsonPath"));

        var jsonObjects = new List<JsonObject> { staff.Object1, staff.Object2, staff.Object3 };
        jsonObjects.ForEach(jsonObject => Console.WriteLine($"{jsonObject.Test1} {jsonObject.Test2}"));

        Console.ReadKey();
    }
}

【讨论】:

    【解决方案2】:

    你也可以使用First:

    dynamic stuff = JsonConvert.DeserializeObject(File.ReadAllText(@"C:\.json"));
    foreach (var i in stuff)
    {
       List<string> projectList = new List<string> { (string)i.First.t1, (string)i.First.t2, (string)i.First.t3, (string)i.First.t4, (string)i.First.t5};
       foreach (var x in projectList)
       {
          Debug.WriteLine(x.ToString());
       }
    }
    

    【讨论】:

      【解决方案3】:

      创建一个属性与 JSON 匹配的模型/dto 类,并根据您的请求进行序列化/反序列化,以便正确解析您的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-01-23
        • 2021-09-25
        • 2011-11-08
        • 2015-12-27
        • 2011-01-10
        • 2010-10-27
        • 2014-02-08
        相关资源
        最近更新 更多