我设置了一个测试DreamFactory服务器,我试图将结果从JSON转换为DataTable,这样我就可以显示一个GridView。我尝试了几件事但没有成功,这是我目前的代码:
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
result = streamReader.ReadToEnd();
dynamic d = JObject.Parse(result);
}
object obj = JsonConvert.DeserializeObject(result);
var table = JsonConvert.DeserializeObject<DataTable>(result); <--ERROR
return table;
我尝试了几种方法,但大部分时间都出现以下错误:
读取DataTable时出现意外的JSON令牌。预期的StartArray,得到了StartObject。路径&#39;&#39;,第1行,第1位。
它可以反序列化,因为对象显示完整的反序列化JSON没有问题。我能做什么?
编辑:JSON结构
{"record":[{"StatusID":1, "Identifier":"DQRJO1Q0IQRS",
"Status":"WaitList",
"StatusDate":"2014-11-15",
"WorkedBy":"None",
"ContactedOn":"2014-11-15T14:21:55.623",
"Email":"email}]}
答案 0 :(得分:2)
您的json不是DataTable。您所需要的只是反序列化为
var root = JsonConvert.DeserializeObject<RootObject>(result);
public class Record
{
public int StatusID { get; set; }
public string Identifier { get; set; }
public string Status { get; set; }
public string StatusDate { get; set; }
public string WorkedBy { get; set; }
public string ContactedOn { get; set; }
public string Email { get; set; }
}
public class RootObject
{
public List<Record> Record { get; set; }
}
有关json到csharp转换的详细信息,请参阅this site
答案 1 :(得分:0)
实际上您不需要将其转换为数据表。它应该在转换为强类型对象时起作用。相当肯定它不适用于动态。 并从结果对象绑定它,数据源应该是一个数组。