这是我的数据从阿贾克斯后到来。
string form = "[{\"id\": \"1\", \"name\": \"deneme\"},{\"id\": \"2\", \"name\": \"deneme2\"}]"
当我反序列化是这样的:
var data = JsonConvert.DeserializeObject(form);
目的是这样的:
{ [{"id": 1, "name": "deneme"},{"id": 2, "name": "deneme2"}] }
我怎么解决这个问题?
编辑:
[HttpPost]
public HttpResponseMessage ImportFromExcel(string form, string controller, string action)
{
//form = "[{\"id\": \"1\", \"name\": \"deneme\"},{\"id\": \"2\", \"name\": \"deneme2\"}]"
ImportObject _importObject = new ImportObject();
_importObject.SchemaName = controller;
_importObject.TableName = action;
var deger = JsonConvert.DeserializeObject(form);
//deger = { [{"id": 1, "name": "deneme"},{"id": 2, "name": "deneme2"}] }
Utility.HttpPostJson(proUtil.GetConfigStr("ApiImportUrl", ""), "Import", JsonConvert.SerializeObject(_importObject));
return new HttpResponseMessage(HttpStatusCode.Created);
}
public class ImportObject
{
public string SchemaName { get; set; }
public string TableName { get; set; }
public List<string> DataSet { get; set; }
}
那么,你是deserialising到JSON.Net对象使用适当的具体类结构代替。我建议做这样的事情。首先做一个类来保存您的数据:
public class FormItem
{
public int Id { get; set; }
public string Name { get; set; }
}
现在反序列化到这样一个IEnumerable<FormItem>
:
var data = JsonConvert.DeserializeObject<IEnumerable<FormItem>>(form);
现在,你可以通过它循环,就像任何其他枚举:
foreach(var formItem in data)
{
Console.WriteLine($"Item with id of {formItem.Id} has a name of {formItem.Name}");
}
解决的办法是:
var form = JsonConvert.DeserializeObject<List<object>>(comingData.ToString());
foreach (var item in form)
{
var cSharpClass = JsonConvert.DeserializeObject<dynamic>(item.ToString());
foreach (JProperty item2 in cSharpClass)
{
Console.WriteLine(item2.Name);
Console.WriteLine(item2.Value);
}
}