【发布时间】:2021-06-06 16:06:41
【问题描述】:
我有一个嵌套字典对象输出,如下所示
{
"name":"test",
"id":1,
"parent": {
"name":"test1",
"id":2,
"parent":{
"name":"test2",
"id":3,
"parent":{
"name":"test3",
"id":4,
"parent":{
....
}
}
}
}
}
这里是返回字典对象的代码:
class GetData
{
public HttpWebResponse WebResponse { get; private set; }
public Dictionary<string, object> Data { get; private set; }
public GetData(HttpWebResponse webResponse, Dictionary<string, object> data)
{
WebResponse = webResponse;
Data = data;
}
}
我有一个包含上述响应的对象,如下所示:
var responseData = GetResponseData(req);
现在我想将上面的字典对象转换为 c# 对象。以下是我的c#对象
class SomeClass
{
public int Id { get; }
public string Name { get; }
public SomeClass Parent { get; }
public IEnumerable<SomeClass> GetAncestry()
{
if (Parent is not null)
{
yield return Parent;
foreach (var ancestor in Parent.GetAncestry()) yield return ancestor;
}
}
}
我正在尝试以下方法将我的字典对象转换为“SomeClass”对象,但它对我不起作用。有人可以帮我解决吗?
List<SomeClass> smClass = new List<SomeClass>(responseData .Values);
【问题讨论】:
-
GetData是类的可怕名称 -
您发布的是 JSON 字符串,而不是字典。您发布的内容不执行任何类型的 JSON 解析。
GetData类不返回任何内容,它只是将构造函数参数公开为属性。 -
你为什么使用 Object 的字典而不是类型化的字典。听起来你对架构有误解,你应该描述你正在尝试做的事情,而不是你想要的解决方案
-
将我的字典对象转换为
SomeClass对象 为什么要创建一个列表然后List<SomeClass>(responseData .Values)? -
你试过反序列化这个 JSON 字符串吗?例如
JsonConvert.DeserializeObject<SomeClass>(json)。不需要GetData类或Dictionary<string,object>
标签: c# asp.net .net model-view-controller c#-4.0