使用Newtonsoft序列化模型列表

问题描述

所以我正在从文件中读取一些参数,并将它们设置为模型的列表,就像这样

List<UploadModel> results = new List<UploadModel>();
                using (var dbfDataReader = new DbfDataReader.DbfDataReader(dbfPath,options))
                {
                    while (dbfDataReader.Read())
                    {
                        UploadModel nga = new UploadModel();
                        nga.OPERATOR_OBJECTID = dbfDataReader.GetInt32(0);
                        nga.SETTLEMENT_CODE = dbfDataReader.GetString(1);
                        nga.TECHNOLOGY_CODE = dbfDataReader.GetString(2);
                        nga.UPLOAD_SPEED_CLASS_CODE = dbfDataReader.GetString(3);
                        nga.DOWNLOAD_SPEED_CLASS_CODE = dbfDataReader.GetString(4);
                        nga.DATA_CATEGORY_QOS_CODE = dbfDataReader.GetString(5);
                        nga.SHAPE = dbfDataReader.GetString(6);
                        nga.SHAPE = "polyGON ((" + nga.SHAPE + "))";
                        results.Add(nga);
                    }
                };

我想将该列表序列化为一个json,我正在这样做

string json = Newtonsoft.Json.JsonConvert.SerializeObject(results,Newtonsoft.Json.Formatting.Indented);

但是,如果我上传多行文件,则无法将模型列表序列化为json。 我尝试过类似string [] json的操作,但遇到了cannot convert type string to string[]

的异常情况

我也尝试过List<UploadModel> models = JsonConvert.SerializeObject...,但这也行不通。

enter image description here

我有列表,我只是不知道如何正确地序列化它。有指针吗? :)

解决方法

这将正确地将其序列化-到一个字符串中的对象列表...即json将为:

[ { // object 1 },{ //object 2 } ]

您可以通过

将其恢复
var list = JsonConvert.Deserialize<IEnumerable<UploadModel>>(json);

如果需要列表,则可以为每个序列化对象一个字符串:

var allObjectsJsons = new List<String>();
// In your loop
while (reader.Read()){
    UploadModel nga = new UploadModel();
    nga.OPERATOR_OBJECTID = dbfDataReader.GetInt32(0);
    ... etc
    var oneObjectJson = JsonConvert.Seriailize(nga);
    allObjectsJsons.Add(oneObjectJson);
}