是否可以像这样获取json.net对象?

时间:2020-08-28 13:38:25

标签: c# asp.net json.net

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

Json schema

因此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());
    }
}

4 个答案:

答案 0 :(得分:0)

您的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();
    }
}

答案 1 :(得分:0)

您也可以使用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());
   }
}

答案 2 :(得分:0)

您可以尝试此操作而无需添加任何课程

  dynamic stuff = JsonConvert.DeserializeObject(File.ReadAllText(@"C:\Users\Paysami\Desktop\ccc\test.json"));
        foreach (var i in stuff)
        {
          
            dynamic projectList = JsonConvert.DeserializeObject(JsonConvert.DeserializeObject(i.Value.ToString()).ToString());
            foreach (var x in projectList)
            {
                Debug.WriteLine(x.Value.ToString());
            }
        }

答案 3 :(得分:0)

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

相关问题