Парсинг JSON ответа при помощи Newtonsoft.JSON [дубликат]

232
19 мая 2021, 06:00
На этот вопрос уже дан ответ здесь:
Как распарсить объект такого вида на c#? (1 ответ)
Закрыт 1 год назад.

Есть ответ сервера в таком виде (Camunda), хотелось бы выловить id каждого, как сие сотворить даже и не представлю. Помогите пожалуйста, буду очень благодарен.

[
{
    "id": "Process_03mhio0:1:ee632e1c-b945-11e9-a37d-14dda953d821",
    "key": "Process_03mhio0",
    "category": "http://bpmn.io/schema/bpmn",
    "description": null,
    "name": null,
    "version": 1,
    "resource": "diagram_1.bpmn",
    "deploymentId": "ee5bdb1a-b945-11e9-a37d-14dda953d821",
    "diagram": null,
    "suspended": false,
    "tenantId": null,
    "versionTag": null,
    "historyTimeToLive": null,
    "startableInTasklist": true
},
{
    "id": "invoice:1:505de6c5-b93f-11e9-a37d-14dda953d821",
    "key": "invoice",
    "category": "http://www.omg.org/spec/BPMN/20100524/MODEL",
    "description": null,
    "name": "Invoice Receipt",
    "version": 1,
    "resource": "invoice.v1.bpmn",
    "deploymentId": "5053ad91-b93f-11e9-a37d-14dda953d821",
    "diagram": null,
    "suspended": false,
    "tenantId": null,
    "versionTag": "V1.0",
    "historyTimeToLive": 30,
    "startableInTasklist": true
},
{
    "id": "invoice:2:508089ff-b93f-11e9-a37d-14dda953d821",
    "key": "invoice",
    "category": "http://www.omg.org/spec/BPMN/20100524/MODEL",
    "description": null,
    "name": "Invoice Receipt",
    "version": 2,
    "resource": "invoice.v2.bpmn",
    "deploymentId": "507df1eb-b93f-11e9-a37d-14dda953d821",
    "diagram": null,
    "suspended": false,
    "tenantId": null,
    "versionTag": "V2.0",
    "historyTimeToLive": 45,
    "startableInTasklist": true
}]
Answer 1

Для начала нужно создать такой класс, чтобы в его объект парсить данные JSON:

public class RootObject
{
  public string id { get; set; }
  public string key { get; set; }
  public string category { get; set; }
  public object description { get; set; }
  public string name { get; set; }
  public int version { get; set; }
  public string resource { get; set; }
  public string deploymentId { get; set; }
  public object diagram { get; set; }
  public bool suspended { get; set; }
  public object tenantId { get; set; }
  public string versionTag { get; set; }
  public int? historyTimeToLive { get; set; }
  public bool startableInTasklist { get; set; }
}

Далее выполняете десериализацию:

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

После этого вся ваша строка id хранится в obj.id. Учитывая её формат, можно разделить строку по двоеточию в массив и выбирать его последний элемент:

string[] ID = obj.id.Split(':');
string yourID = ID[ID.Length-1];
READ ALSO
Как совместить все шаблоны в 1 стиль

Как совместить все шаблоны в 1 стиль

Есть код переопределяющий дизайн элемента Menu

95
Кеширует ли .NET коллекцию?

Кеширует ли .NET коллекцию?

Например, есть метод, который на вход принимает массив значений

91
Не понимаю как работает такой массив

Не понимаю как работает такой массив

Что я должен написать в ShopCost[index] и в ShopBonus[index]? Как нужно обявить масивы ShopCost[index] и ShopBonus[index]Ну я имею виду я обявляю масивы так

98
При возвращении IEnumerable из контроллера не перехватывается Exception

При возвращении IEnumerable из контроллера не перехватывается Exception

Есть метод в контроллере который возвращает IEnumerable, в процессе конвейера LINQ происходит Exception и фильтр эксепшенов не перехватывает этот эксепшен...

131