0

我正在使用 C# 从 JSON 文件中获取值并将它们放入数据库中。我是 JSON 新手,所以不太了解如何使用它。我会尽力解释我所拥有的结构以及我正在尝试做的事情。但总而言之,我试图以与 SQL Where 语句中类似的方式从 JSON 调用变量。所以在这个其他值 = x 的地方获取这个值。

所以JSON格式如下。首先,它识别列。

"columns": [
    {
      "id": 8098453499733892,
      "index": 0,
      "title": "Task Name",
      "type": "TEXT_NUMBER",
      "format": ",,,,,,2,,,,,,,,,1",
      "primary": true,
      "width": 378
    },
    {
      "id": 780104105256836,
      "index": 1,
      "title": "KPI (RYG)",
      "type": "PICKLIST",
      "symbol": "RYG",
      "options": [
        "Red",
        "Yellow",
        "Green"
      ],.....

然后是其中的行和单元格:

"id": 2157159933863812,
      "rowNumber": 2,
      "parentRowNumber": 1,
      "parentId": 7786659468076932,
      "expanded": false,
      "format": ",,1,,,,,,,22,,,,,,",
      "createdAt": "2015-03-04T15:58:28+13:00",
      "modifiedAt": "2015-03-04T15:58:32+13:00",
      "cells": [
        {
          "columnId": 8098453499733892,
          "type": "TEXT_NUMBER",
          "value": "GLH Toll MASTER FROM WEEK 47",
          "displayValue": "GLH Toll MASTER FROM WEEK 47",
          "format": ",,1,,,,2,,,22,,,,,,1"
        },
        {
          "columnId": 2750428942231428,
          "type": "CHECKBOX",
          "value": true,
          "format": ",,1,,,,,,,22,,,,,,"
        },

好的,举个例子。我想要做的是获取单元格中的 columnID 值,然后使用它来查找列中的标题值。所以在上面的例子中,我想在列中的 id 等于 8098453499733892 的地方找到“标题”,这会给我“任务名称”的结果。

我什至不知道这是否可能,但一直在努力在网上找到一个可行的例子。仅供参考,我正在使用智能表。

4

2 回答 2

1

您需要在 c# 中创建一个等效的对象/类,其中包含 JSON 中的这些属性。为了根据您的 JSON 结构获取 columnID 列,您需要创建以下类:

class Class1 {
     public string id { get; set; }
     public int rowNumber { get; set; }
     public int parentId { get; set; }
     public bool expanded { get; set; }
     public string format{ get; set; }
     public List <Cells> cells {get; set;}
}

class Cells {
  public string columnId {get; set;}
  public string type{get; set;}
  public bool value{get; set;}
  public string format {get; set;}

}

您需要使用 Class1 对象从 API 反序列化 JSON 字符串,然后您可以从那里访问所需的任何列。

于 2015-03-13T03:05:39.037 回答
0

对于任何人来说,我在选择标记中使用了 where 子句。这是我用来根据 id 值查找列标题的代码。

var test = jObject.SelectToken("columns").Where(t => t["id"].Value<Int64>() == 5283703732627332).FirstOrDefault()["title"].Value<string>();
于 2015-03-17T04:13:02.677 回答