C#中如何把[{"op":"like","field":"UserName","value":"陈","type":"text"}]数据转成DataTable
时间: 2024-06-02 22:05:02 浏览: 53
在C#中,可以使用Json.NET库来将JSON字符串转换成DataTable。
可以按照以下步骤进行操作:
1. 引用Json.NET库
在Visual Studio中,右键单击项目,选择“管理NuGet程序包”,搜索“Newtonsoft.Json”并安装。
2. 创建类来反序列化JSON
使用Visual Studio的自动化工具来创建类,将要转换的JSON字符串复制到“Paste JSON As Classes”工具中,然后单击“生成”按钮来创建类。
例如,对于给定的JSON字符串,可以生成以下类:
```
public class Filter
{
public string op { get; set; }
public string field { get; set; }
public string value { get; set; }
public string type { get; set; }
}
```
```
public class RootObject
{
public List<Filter> filters { get; set; }
}
```
3. 反序列化JSON
使用JsonConvert.DeserializeObject方法将JSON字符串反序列化为RootObject对象,然后使用LINQ查询将其转换为DataTable。
下面是一个示例代码:
```
using Newtonsoft.Json;
using System.Data;
using System.Linq;
string json = @"[{""op"":""like"",""field"":""UserName"",""value"":""陈"",""type"":""text""}]";
RootObject root = JsonConvert.DeserializeObject<RootObject>(json);
DataTable dataTable = new DataTable();
// 添加列
dataTable.Columns.Add("op", typeof(string));
dataTable.Columns.Add("field", typeof(string));
dataTable.Columns.Add("value", typeof(string));
dataTable.Columns.Add("type", typeof(string));
// 添加行
foreach (Filter filter in root.filters)
{
DataRow row = dataTable.NewRow();
row["op"] = filter.op;
row["field"] = filter.field;
row["value"] = filter.value;
row["type"] = filter.type;
dataTable.Rows.Add(row);
}
// 显示结果
foreach (DataRow row in dataTable.Rows)
{
Console.WriteLine($"{row["op"]}, {row["field"]}, {row["value"]}, {row["type"]}");
}
```
阅读全文