反序列化对象的结果后有多余的括号

问题描述 投票:-3回答:2

这是我的数据从阿贾克斯后到来。

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; }
}
c# json ajax post
2个回答
1
投票

那么,你是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}");
}

0
投票

解决的办法是:

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.