c#从json中挑选出数据

时间:2017-07-07 17:27:40

标签: c# json

我希望能够使用c#来提取下面json的所有数据点。我需要所有 StandardId 的所有值。不仅仅是一个数据点,而是 StandardId

的所有实例
{
  "CreatedBy": null,
  "CanBeRemoved": false,
  "ConfigurationItems": [ "" ],
  "ApprovalReasons": [
    {
      "AssociatedCI": "",
      "AssociatedRuleName": "BRS: ",
      "AssociatedRuleApprovalType": null,
      "AssociatedRulePartyType": "Group",
      "AssociatedRulePartyName": "Digital ",
      "AssociatedAdditionalComment": "Added to all "
    }
  ],
  "PossibleApprovers": [
    {
      "Approver": {
        "Display": "Jag",
        "StandardId": "I6",
        "RoleName": null,
        "FullName": null,
        "LineOfBusiness": null,
        "ErrorMessage": null
      },
      "IsEscalation": false,
      "IsDelegate": false
    },
    {
      "Approver": {
        "Display": "Will",
        "StandardId": "U55",
        "RoleName": null,
        "FullName": null,
        "LineOfBusiness": null,
        "ErrorMessage": null
      },
      "IsEscalation": false,
      "IsDelegate": false
    },

    {
      "Approver": {
        "Display": "Su",
        "StandardId": "U2",
        "RoleName": null,
        "FullName": null,
        "LineOfBusiness": null,
        "ErrorMessage": null
      },
      "IsEscalation": false,
      "IsDelegate": false
    }
  ],
  "OriginalApprovals": [],
  "AggregatedApproval": null,
  "IsAggregated": false,
  "AggregationId": 0,
  "UpdatedBy": null,
  "UpdatedDt": null,
  "IsGroupActive": false
}

1 个答案:

答案 0 :(得分:1)

最简单的方法是@maccettura分享一份。

创建C#对象

打开json2csharp生成课程。 Visual Studio也可以为您生成它:

how to generate

使用JSON.NET

反序列化您的类

doc易于使用,您可以在第一页找到您的信息。

Foo foo = JsonConvert.DeserializeObject<Foo>(json);

演示

Try it online

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Program
{
    public static void Main()
    {
        string json = @"{
""CreatedBy"": null,
""CanBeRemoved"": false,
""ConfigurationItems"": [ """" ],
""ApprovalReasons"": [
{
  ""AssociatedCI"": """",
  ""AssociatedRuleName"": ""BRS: "",
  ""AssociatedRuleApprovalType"": null,
  ""AssociatedRulePartyType"": ""Group"",
  ""AssociatedRulePartyName"": ""Digital "",
  ""AssociatedAdditionalComment"": ""Added to all ""
}],
""PossibleApprovers"": [
{
  ""Approver"": {
    ""Display"": ""Jag"",
    ""StandardId"": ""I6"",
    ""RoleName"": null,
    ""FullName"": null,
    ""LineOfBusiness"": null,
    ""ErrorMessage"": null
  },
  ""IsEscalation"": false,
  ""IsDelegate"": false
},
{
  ""Approver"": {
    ""Display"": ""Will"",
    ""StandardId"": ""U55"",
    ""RoleName"": null,
    ""FullName"": null,
    ""LineOfBusiness"": null,
    ""ErrorMessage"": null
  },
  ""IsEscalation"": false,
  ""IsDelegate"": false
},
{
  ""Approver"": {
    ""Display"": ""Su"",
    ""StandardId"": ""U2"",
    ""RoleName"": null,
    ""FullName"": null,
    ""LineOfBusiness"": null,
    ""ErrorMessage"": null
  },
  ""IsEscalation"": false,
  ""IsDelegate"": false
}],
""OriginalApprovals"": [],
""AggregatedApproval"": null,
""IsAggregated"": false,
""AggregationId"": 0,
""UpdatedBy"": null,
""UpdatedDt"": null,
""IsGroupActive"": false
}";

        var m = JsonConvert.DeserializeObject<RootObject>(json);

        foreach(var possibleApprovers in m.PossibleApprovers)
        {
            Console.WriteLine(possibleApprovers.Approver.StandardId);
        }
    }

    public class ApprovalReason
    {
        public string AssociatedCI { get; set; }
        public string AssociatedRuleName { get; set; }
        public object AssociatedRuleApprovalType { get; set; }
        public string AssociatedRulePartyType { get; set; }
        public string AssociatedRulePartyName { get; set; }
        public string AssociatedAdditionalComment { get; set; }
    }

    public class Approver
    {
        public string Display { get; set; }
        public string StandardId { get; set; }
        public object RoleName { get; set; }
        public object FullName { get; set; }
        public object LineOfBusiness { get; set; }
        public object ErrorMessage { get; set; }
    }

    public class PossibleApprover
    {
        public Approver Approver { get; set; }
        public bool IsEscalation { get; set; }
        public bool IsDelegate { get; set; }
    }

    public class RootObject
    {
        public object CreatedBy { get; set; }
        public bool CanBeRemoved { get; set; }
        public List<string> ConfigurationItems { get; set; }
        public List<ApprovalReason> ApprovalReasons { get; set; }
        public List<PossibleApprover> PossibleApprovers { get; set; }
        public List<object> OriginalApprovals { get; set; }
        public object AggregatedApproval { get; set; }
        public bool IsAggregated { get; set; }
        public int AggregationId { get; set; }
        public object UpdatedBy { get; set; }
        public object UpdatedDt { get; set; }
        public bool IsGroupActive { get; set; }
    }
}