c# - 获取对象值字典数组的对象的值“字典"
问题描述
我正在寻找反序列化一个 json 对象,并且在我的 json 类中,我有一个 type 属性Dictionary<string, Name[]>
。
Names
反序列化我的 json 数据后如何访问属性?
json
{
"cache": [ {
"data": {
"names": {
"1": [{
"firstname": "John",
"secondname": "Doe"
}],
"2": [{
"firstname": "Alice",
"secondname": "Smith"
}],
"3": [{
"firstname": "John",
"secondname": "John"
}]
}
}
}]
}
json类
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
// using Sample;
//
// var jsonRoot = JsonRoot.FromJson(jsonString);
namespace Sample
{
using System;
using System.Collections.Generic;
using System.Globalization;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public partial class JsonRoot
{
[JsonProperty("cache")]
public Cache[] Cache { get; set; }
}
public partial class Cache
{
[JsonProperty("data")]
public Data Data { get; set; }
}
public partial class Data
{
[JsonProperty("names")]
public Dictionary<string, Name[]> Names { get; set; }
}
public partial class Name
{
[JsonProperty("firstname")]
public string Firstname { get; set; }
[JsonProperty("secondname")]
public string Secondname { get; set; }
}
}
解决方案
你可以做这样的事情来打印 Key 和 FirstName
var obj = JsonConvert.DeserializeObject<JsonRoot>(json);
foreach (KeyValuePair<string, Name[]> name in obj.Cache.FirstOrDefault().Data.Names)
{
Console.WriteLine(name.Key + " " + name.Value.First().Firstname);
}
您的缓存是一个数组,您可以找到一种方法来遍历其中的每一个......对于这个例子,我使用了FirstOrDefault()
.
在 foreach 循环中,我打印每个元素的第一个元素,因为这就是 json 示例中的所有元素,但是如果有更多对象Name[]
,您可以通过迭代每个对象来详细说明该方法。Name
// Prints
1 John
2 Alice
3 John
推荐阅读
- asp.net - django 应用程序中的 IIS 和 SQL Server Windows 身份验证
- uwp - UWP 中的 web 隔间是什么意思?
- java - 解决 Java 接口钻石问题
- c++ - 重定向输入和输出时如何处理main之外的文件I/O?
- javascript - Puppeteer 按 Enter 按钮或单击对话框 OK 按钮
- javascript - 使用 Sinon.js 创建 mocks 时,mock.restore() 究竟做了什么?
- php - 致命错误:未捕获的错误:函数名称必须是字符串(响应式 Google Maps WP 插件 - Metabox.php 位于第 115 行)
- jsf - Primefaces 延迟加载数据表并在表外过滤表单
- vb.net - 从查询中选择不起作用
- python - Python,如何从列表中的列表中打印特定项目?