c#JSON直接嵌套数组
我正在使用RESTful api并尝试处理返回的数据。数据本身由数组中的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" ] ],
{
"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];
}