Serializing a list of models with Newtonsoft

Viewed 83

So I am reading some parameters from a file and I am setting those to a list of my model like so

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);
                    }
                };

I want to serialize that list to a json and I am doing it like so

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

but if I upload a file with multiple rows it can't serialize the list of models to a json. I tried something like this string [] json but I get an exception that I cannot convert type string to string[]

I also tried List<UploadModel> models = JsonConvert.SerializeObject... but this too doesn't work.

enter image description here

I have the list, I just don't know how to serialize it correctly. Any pointers? :)

1 Answers

That will serialize it correctly - to a List of objects in one string... i.e. the json will be:

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

And you can get it back with

var list = JsonConvert.Deserialize<IEnumerable<UploadModel>>(json);

If you want a list, of one string per serialised object you can do:

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);
} 
Related