c# - 为什么我的 JObject 到模型转换返回 null?
问题描述
我正在尝试将一个非常简单的 JObject 转换为 C# 模型对象,但由于某种原因,我得到的只是空值。
对象模型如下所示
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"
}
]
所以我知道数据可以从我的数据源中很好地返回,但我无法将转换为我的简单模型工作。
我在这里想念什么?
解决方案
您的 JSON 表示一个对象数组,其中每个对象都包含一个名为toplevelCat
. 您正试图反序列化为一个包含名为Categories
. 由于您的模型与 JSON 不匹配,因此无法正常工作。让你的模型像这样:
public class PerfectFit
{
public string TopLevelCat { get; set; }
}
List<PerfectFit>
您可以像这样从 JSON 字符串反序列化为:
List<PerfectFit> list = JsonConvert.DeserializeObject<List<PerfectFit>>(json);
小提琴:https ://dotnetfiddle.net/syULkn
如果你从一个开始,IQueryable<JObject>
你应该能够做这样的事情:
List<PerfectFit> list = queryResultSet.ToList()
.Select(jo => jo.ToObject<PerfectFit>()).ToList();
推荐阅读
- sql - SQL在根据条件将一列拆分为2时将表自身连接起来
- javascript - 突出显示 Woocommerce 元素的 Javascript 函数。使用 querySelector() 的问题
- python - TensorFlow CNN 成本停止改善
- ios - 在不使用麦克风的情况下连接 Twilio
- php - MySQL:错误 1217 (23000):无法删除或更新父行:外键约束失败 - 但仅适用于 1 个 sql 文件
- vue.js - NuxtJS - vee-validate 不返回自定义消息
- ubuntu - 设备验证码:github如何计算deviceId?
- powershell - 在多个组中使用 Get-ADGroup 和 Get-Groupmember
- python - 排序多维列表 - Python
- database - 独特的问卷类型 - 数据库设计