使用 C# 在 JSON 中查找 columnID 等于 xxxx 的列值
Finding a column value where columnID equals xxxx in JSON using C#
我正在使用 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 值,然后使用它来查找列中的标题值。所以在上面的例子中,我想找到 'title',其中列中的 id 等于 8098453499733892,这会给我 'Task Name' 的结果。
我什至不知道这是否可行,但一直在努力寻找网络上的工作示例。仅供参考,我正在使用智能表。
您需要在 c# 中创建一个等效的 object/class,其中包含 JSON 中的那些属性。为了根据您的 JSON 结构获取 columnID 列,您需要创建下面的 class:
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 字符串,然后您可以从那里访问您需要的任何列。
对于任何看我的人,我在 select 标记中使用了 where 子句。这是我用来根据 id 值查找列标题的代码。
var test = jObject.SelectToken("columns").Where(t => t["id"].Value<Int64>() == 5283703732627332).FirstOrDefault()["title"].Value<string>();
我正在使用 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 值,然后使用它来查找列中的标题值。所以在上面的例子中,我想找到 'title',其中列中的 id 等于 8098453499733892,这会给我 'Task Name' 的结果。
我什至不知道这是否可行,但一直在努力寻找网络上的工作示例。仅供参考,我正在使用智能表。
您需要在 c# 中创建一个等效的 object/class,其中包含 JSON 中的那些属性。为了根据您的 JSON 结构获取 columnID 列,您需要创建下面的 class:
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 字符串,然后您可以从那里访问您需要的任何列。
对于任何看我的人,我在 select 标记中使用了 where 子句。这是我用来根据 id 值查找列标题的代码。
var test = jObject.SelectToken("columns").Where(t => t["id"].Value<Int64>() == 5283703732627332).FirstOrDefault()["title"].Value<string>();