我尝试使用Json.NET从JSON字符串反序列化DataSet。 Json String包含我想要使用的状态,消息和表:
{
"status": "ok",
"message": "",
"table": [{
"column1": "value1",
"column2": "value2"
}, {
"column1": "value3",
"column2": "value4"
}]
}
这是我的来源:
public class RequestResult
{
public string status { get; set; }
public string message { get; set; }
}
...
var serializer = new JsonSerializer();
var sr = new StreamReader(response.GetResponseStream()).ReadToEnd();
var rr = JsonConvert.DeserializeObject<RequestResult>(sr);
// Without status and message the following works fine like here:
// http://www.newtonsoft.com/json/help/html/DeserializeDataSet.htm
DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(sr);
gridControlMain.DataSource = dataSet.Tables["table"];
如果我使用没有状态和消息的Json字符串它工作正常,但我需要状态和消息!来自Json.NET的异常消息是: 读取DataTable时出现意外的JSON令牌。预期的StartArray,得到了String。路径'状态',第1行,第14位。 我该如何管理?
祝你好运
答案 0 :(得分:2)
您的代码段显示了一个对象,其中包含三个属性status
,message
和table
。无法将此对象反序列化为DataTable。 table
属性可以。
您可以将此代码段反序列化为具有两个字符串和一个DataTable属性的类,例如:
class MyTableUtilClass
{
public string Status{get;set;}
public string Message {get;set;}
public DataTable Table{get;set;}
}
var myUtil=JsonConvert.DeserializeObject<MyTableUtilClass>(jsonText);
DataTable myTable=myUtil.Table;