将JSON转换为GridView

时间:2014-12-26 20:29:08

标签: c# asp.net json gridview

我设置了一个测试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}]}

2 个答案:

答案 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)

实际上您不需要将其转换为数据表。它应该在转换为强类型对象时起作用。相当肯定它不适用于动态。 并从结果对象绑定它,数据源应该是一个数组。