【发布时间】:2019-01-14 04:47:12
【问题描述】:
我正在尝试将一个非常简单的 JObject 转换为 C# 模型对象,但由于某种原因,我得到的只是 null。
对象模型如下所示
public class PerfectFit
{
public Array Categories { get; set; }
}
转换器也这么简单
public static PerfectFit PerfectFitTopLevelFormat(IQueryable<JObject> unformattedQueryOutput)
{
//var jongel = unformattedQueryOutput.ToList();
PerfectFit formattedQueryOuput = Newtonsoft.Json.JsonConvert.DeserializeObject<PerfectFit>(unformattedQueryOutput.ToList().ToString());
return formattedQueryOuput;
}
我这样调用转换器方法
PerfectFit formattedQueryOutput = ReFormatQueryOutput.PerfectFitTopLevelFormat(queryResultSet);
return Ok(formattedQueryOutput);
queryResultSet 检索如下
IQueryable<JObject> queryResultSet = client.CreateDocumentQuery<JObject>(UriFactory.CreateDocumentCollectionUri(brandDbInfo.DbName, brandDbInfo.DbCollection), queryElementInfo.SqlStatement, queryOptions);
如果我只是返回 queryResultSet.ToList();我得到以下内容
[
{
"topLevelCat": "Barn"
},
{
"topLevelCat": "Dam"
},
{
"topLevelCat": "Herr"
},
{
"topLevelCat": "Divided"
}
]
所以我知道数据可以从我的数据源中正常返回,但我无法将转换为我的简单模型。
我在这里错过了什么?
【问题讨论】:
-
为什么这样做
unformattedQueryOutput.ToList().ToString(),只需提供unformattedQueryOutput。或者使Categories成为一个列表而不是一个数组。我想你可以看到我要去哪里,你正在尝试反序列化为不同的类型。 -
反序列化器需要一个字符串,还是我遗漏了什么?最终结果必须是一个数组,所以我可能对转换能够做什么有点困惑
标签: c# arrays json model json.net