首页 > 解决方案 > 检索 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 对象序列化到特定深度。有人可以帮忙吗?

标签: c#.netjsonjson.net

解决方案


您只需使用 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 对象。


推荐阅读