c# - 检索 JSON 对象直到级别 1
问题描述
我正在从数据库中读取数据并将其转换为具有多个集合和多个级别的 JSON 对象,但我只想检索 json 直到级别 1,并且没有相关的集合或数据。为此,我在 C# 中使用了以下代码行
var json = JsonConvert.SerializeObject(obj, new JsonSerializerSettings() { MaxDepth = 1, ReferenceLoopHandling = ReferenceLoopHandling.Ignore });
上面的行正在返回以下
{
"abc": [
{
"Id": "TEST-06",
"No": 1,
"Code": " ",
"Description": ".....",
"Percentage": null,
"Details": []
}
],
"xyz": {
"Id": "TEST-06",
"No.": 1,
"Date": "2018/07/06",
"Enable": 0,
"Reason": "....."
}
}
我只想要对象“abc”,但它也返回 xyz。我到处搜索,他们说使用最大深度属性将 json 对象序列化到特定深度。有人可以帮忙吗?
解决方案
您只需使用 JObject 属性即可仅获取“abc”对象:
var jObject = JObject.Parse(YourJSonString);
var abcObject = jObject.First;
没有“abc”对象的更新
为 JSON 主对象创建一个任意名称的类。
public class AnyClass
{
public string Id { get; set; }
public long No { get; set; }
public string Code { get; set; }
public string Description { get; set; }
public object Percentage { get; set; }
public List<object> Details { get; set; }
public List<object> xyz { get; set; }
}
使用此类类型反序列化您的 JSon 字符串:
var deserializeObject = JsonConvert.DeserializeObject<AnyClass>(jsonString);
现在deserializeObject
,您将拥有所有属性和 xyz 对象。
推荐阅读
- angularjs - 哪个 AngularJs Material 组件可用于显示具有折叠/展开支持的堆叠消息
- r - 无法更改 ggplot2 中图例项的顺序
- vue.js - 如何在 Vue.js 中丰富事件数据
- html - 为什么填充杯子的 css 动画与交互一起工作
- ios - 反应本机输入自动填充
- r - 从由区域标记的单元格中提取文本
- javascript - 如何使随机值不重复?(JavaScript)
- postgresql - 如何在 Postgresql 中创建日期递增触发器
- macos - 如何从 SwiftUI TextField 获取数据到 NSDokument 类
- node.js - google-play-billing-validator:回馈:'无效响应,请检查 \'Verifier\' 配置或上面的 statusCode'