Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#JSON直接嵌套数组_C#_Arrays_Json_Json.net - Fatal编程技术网

c#JSON直接嵌套数组

c#JSON直接嵌套数组,c#,arrays,json,json.net,C#,Arrays,Json,Json.net,我正在使用RESTful api并尝试处理返回的数据。数据本身由数组中的json数组组成 { "category1": [ [ "http://url1", "URL 1 Title" ], [ "http://url2", "URL 2 Title" ] ], "category2": [ [ "http://url3", "URL 3 Title" ] ],

我正在使用RESTful api并尝试处理返回的数据。数据本身由数组中的json数组组成

{
  "category1": [
    [
      "http://url1",
      "URL 1 Title"
    ],
    [
      "http://url2",
      "URL 2 Title"
    ]
  ],
  "category2": [
    [
      "http://url3",
      "URL 3 Title"
    ]
  ],
  "category3": [
    [
      "http://url4",
      "URL 4 Title"
    ]
  ]
}
我创建了一个映射到上述内容的类,但我不知道如何解析结果并提取单个URL和URL标题

我可以看到如果这些是对象,我会怎么做,但不知道如何直接访问嵌套数组。

试试这个

class Output
{
     public string[][] category1 { get; set; }
     public string[][] category2 { get; set; }
     public string[][] category3 { get; set; }
}

class OutputCategory
{
     public string uri { get; set; }
     public string label { get; set; }
}
我已将
main()
方法中的代码修改为以下代码

 string samplejson =
            @"{'category1':[['http://url1','URL 1 Title'],['http://url2','URL 2 Title']],'category2':[['http://url3','URL 3 Title']],'category3':[['http://url4','URL 4 Title']]}";

        //deserialised to my class object
        var result = JsonConvert.DeserializeObject<Output>(samplejson);

        //create new output object
        Output outCat = new Output();

        //I now want to assign the appropriate values to my new output object

        Console.WriteLine(result.category2.Length);
        Console.WriteLine("URL: " + result.category1[0][0]);
        Console.WriteLine("Title: " + result.category1[0][1]);
string samplejson=
@“{'category1':[[]http://url1','URL 1 Title'],['http://url2“,'URL 2 Title']],'category2':[[]http://url3','URL 3 Title']],'category3':['http://url4“,'URL 4标题']]}”;
//反序列化到我的类对象
var result=JsonConvert.DeserializeObject(samplejson);
//创建新的输出对象
输出输出=新输出();
//现在,我想为我的新输出对象指定适当的值
Console.WriteLine(result.category2.Length);
Console.WriteLine(“URL:+result.category1[0][0]);
Console.WriteLine(“标题:“+result.category1[0][1]);

确保检查数组的长度,然后继续计算结果。

我在代码中使用这一点,在创建模型类后,可以使用下面的方法

 JsonConvert.DeserializeObject<YourModel>(content,
                                        new JsonSerializerSettings
                                        {
                                           ReferenceLoopHandling = ReferenceLoopHandling.Ignore
                                        });
JsonConvert.DeserializeObject(内容、,
新JsonSerializerSettings
{
ReferenceLoopHandling=ReferenceLoopHandling.Ignore
});
您想要:

然后:

var model = JsonConvert.DeserializeObject<Model>(json);

foreach (var element in model.category1)
{
    var url = element[0];
    var title = element[1];
}
var model=JsonConvert.DeserializeObject(json);
foreach(model.category1中的var元素)
{
var url=元素[0];
变量标题=元素[1];
}

您可以这样做:
var-objectOfYourClass=JsonConvert.DeserializeObject(jsonString)
JSON的结果将是一个具有三个属性的对象,而不是一个具有三个对象的数组。请添加您当前的代码请在此处找到我的示例代码:非常感谢您的帮助!非常感谢你的帮助+1是如何访问嵌套更深的数组的一个很好的示例。大多数示例都是从数组或对象开始的,并保持不变。
var model = JsonConvert.DeserializeObject<Model>(json);

foreach (var element in model.category1)
{
    var url = element[0];
    var title = element[1];
}