【发布时间】:2015-06-16 05:39:23
【问题描述】:
我知道以前有人问过这种问题,但我似乎找不到任何有效的方法。
我正在尝试将 JSON 字符串转换为 DataTable,或者我可以在 C# 上使用的任何其他形式。
这是我收到的 JSON 文件的示例:
{ "DatabaseName" : {"Employees": [{"Full-Name":"John Smith","Address":["123 Main St", "Apt 202"],"City":"NYC"}]}}
我尝试了不同的方法,但要么得到一个空的 DataTable,要么得到许多不同的错误。
Object jObject = JsonConvert.DeserializeObject<JObject>(Response.Content);
DataTable dsResult = JsonConvert.DeserializeObject<DataTable>(jObject.ToString());
给我:
读取 DataTable 时出现意外的 JSON 令牌。预期 StartArray,得到 StartObject。路径'',第 1 行,位置 1。
任何帮助将不胜感激。
我也使用 JSON 2 C# 创建了一个类,并尝试使用
JsonConvert.DeserializeObject<Employees>(Response.Content);
但是,类不允许我创建变量 public string Full-Name,因为在创建变量时我不能使用 -。
有解决办法吗?
【问题讨论】:
-
Convert JSON to DataTable 的可能重复项
-
您不应将其转换为 DataTable,而应将其转换为模型对象(普通类)。要弄清楚类结构应该是什么,我喜欢http://json2csharp.com/
-
执行此操作时,我收到以下错误:无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[ProDataSet ]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])才能正确反序列化。要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或将反序列化类型更改为正常的 .NET 类型
-
@user130622 你必须确保你反序列化到正确的类。
标签: c# asp.net json datatable json-deserialization