1

I have a list made up of objects, that each object has 5 data. I need to convert that list to a json, but using serialize it fills me out the empty json.

Does anyone know what I may be doing wrong?

foreach (DataRow dtRow in dtAlarmas.Rows)
                {
                    String Name = dtRow["Name"].ToString();
                    String ID = dtRow["ID"].ToString();
                    String AlarmText = dtRow["AlarmText"].ToString();
                    String AlarmTimeNoNula = dtRow["AlarmTimeNoNula"].ToString();
                    lstAlarmasNoTratadas.Add(new Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel(dtRow["Name"].ToString(), Convert.ToInt32(dtRow["ID"]), dtRow["Class"].ToString(), dtRow["AlarmText"].ToString(), dtRow["AlarmTimeNoNula"].ToString()));
                }

                string sParams = JsonConvert.SerializeObject(lstAlarmasNoTratadas);

sParams value after convert = "[{}]"

Class Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Ondoan.DatosAux.Alarmas
{
   public class AlarmaNoTratadaModel
    {
        private string Name;
        private int ID;
        private string Class;
        private string AlarmText;
        private string AlarmaTimeNoNula;

        public AlarmaNoTratadaModel(string Name, int ID, string Class, string AlarmText, string AlarmaTimeNoNula)
       {
           // TODO: Complete member initialization
           this.Name = Name;
           this.ID = ID;
           this.Class = Class;
           this.AlarmText = AlarmText;
           this.AlarmaTimeNoNula = AlarmaTimeNoNula;
       }

        public class AlarmaNoTratadasModel
        {
            public AlarmaNoTratadasModel() { }
            public AlarmaNoTratadasModel(String Name, Nullable<System.Int32> ID, String Class, String AlarmText, String AlarmaTimeNoNula)
            {
                this.Name = Name;
                this.ID = ID;
                this.Class = Class;
                this.AlarmText = AlarmText;
                this.AlarmaTimeNoNula = AlarmaTimeNoNula.ToString();
            }

            public System.String Name { get; set; }
            public Nullable<System.Int32> ID { get; set; }
            public System.String Class { get; set; }
            public System.String AlarmText { get; set; }
            public System.String AlarmaTimeNoNula { get; set; }
        }
    }
}
urrutias
  • 33
  • 4
  • please check 'lstAlarmasNoTratadas' contain objects or it is null? Have you tried this? https://stackoverflow.com/questions/6366118/converting-list-to-json-format-quick-and-easy-way/37602728 – Muhammad Sami May 28 '20 at 08:56
  • Can you show the `Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel` class? – StijnvanGaal May 28 '20 at 08:57
  • 1
    Does this answer your question? [converting list to json format - quick and easy way](https://stackoverflow.com/questions/6366118/converting-list-to-json-format-quick-and-easy-way) – Edney Holder May 28 '20 at 08:59
  • i added the class Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel @StijnvanGaal – urrutias May 28 '20 at 09:00
  • @MuhammadSami im trying at the moment – urrutias May 28 '20 at 09:01
  • Thats a `new Ondoan.DatosAux.Alarmas.AlarmaNoTratadaModel` but `AlarmaNoTratadaModel` has no public properties The one with an S "AlarmaNoTratada**s**Model" does – Drag and Drop May 28 '20 at 09:03
  • USe Properties in AlarmaNoTratadaModel class – Muhammad Sami May 28 '20 at 09:04
  • https://www.newtonsoft.com/json/help/html/SerializationGuide.htm#Objects . Read the Object section. _"By default a type's properties are serialized in opt-out mode. What that means is that all public fields and properties with getters are automatically serialized to JSON, and fields and properties that shouldn't be serialized are opted-out by placing JsonIgnoreAttribute on them. To serialize private members, the JsonPropertyAttribute can be placed on private fields and properties."_ – Drag and Drop May 28 '20 at 09:06
  • related : https://stackoverflow.com/questions/32008869/json-net-serialize-specific-private-field, https://stackoverflow.com/questions/24106986/json-net-force-serialization-of-all-private-fields-and-all-fields-in-sub-classe, https://stackoverflow.com/questions/10189471/json-net-serialize-private-members-and-not-readonly-properties – Drag and Drop May 28 '20 at 09:07
  • Does this answer your question? [Json.net serialize specific private field](https://stackoverflow.com/questions/32008869/json-net-serialize-specific-private-field) – Drag and Drop May 28 '20 at 09:09
  • Thanks to all for the help. @StijnvanGaal answer worked for me. Thank you all – urrutias May 28 '20 at 09:14

1 Answers1

1

The issue is that JsonConvert doesn't serialize private fields by default. Either make them public properties or add the JsonPropertyAttribute.

[JsonProperty]
private string Name;
[JsonProperty]
private int ID;
[JsonProperty]
private string Class;
[JsonProperty]
private string AlarmText;
[JsonProperty]
private string AlarmaTimeNoNula;
StijnvanGaal
  • 441
  • 3
  • 17