-1

IF I USED JARRAY.FROMOBJECT i get an empty skeleton json, can someone help me letting me know how to convert the list into a jarray. Thanks

class EGTenantCreated
{
internal string id { get; set; }
internal string subject { get; set; }
internal EGData data { get; set; }
internal string eventType { get; set; }
internal string eventTime { get; set; }
internal string dataVersion { get; set; }
internal string metadataVersion { get; set; }
internal string topic { get; set; }
}

class EGData
{
internal string TenantId { get; set; }
internal string TenantName { get; set; }
internal string AdministratorEmail { get; set; }
internal string ProductId { get; set; }
internal string PackageInstanceId { get; set; }
internal string CorrelationId { get; set; }
}

public List<EGTenantCreated> UpdateEGTenant()
{
DateTime date = new DateTime();
string tenantName = "Tenant" + date.Day.ToString() + date.Month.ToString() + 
date.Year.ToString() + "_"
+ date.Hour.ToString() + date.Minute.ToString();

string adminEmail = "user" + date.Day.ToString() + date.Month.ToString() + 
date.Year.ToString() + "_"
+ date.Hour.ToString() + date.Minute.ToString() + "@testmail.com";

EGData egData = new EGData();
egData.TenantId = Guid.NewGuid().ToString();
egData.TenantName = tenantName;
egData.AdministratorEmail = adminEmail;
egData.ProductId = "Erp";
egData.PackageInstanceId = "522b0dc0-5db9-437d-97cc-cd4c742b1b22";
egData.CorrelationId = Guid.NewGuid().ToString();

EGTenantCreated egTenant = new EGTenantCreated();
egTenant.id = Guid.NewGuid().ToString();
egTenant.subject = "/DeploymentRegistry/TenantCreated";
egTenant.eventType = "TenantCreated";
egTenant.eventTime = "2019-10-04T20:02:54.9411815Z";
egTenant.dataVersion = "1.0.0";
egTenant.metadataVersion = "1";
egTenant.topic = "topictest";
egTenant.data = egData;

List<EGTenantCreated> list = new List<EGTenantCreated>();
list.Add(egTenant);

return list;
}
var list = UpdateEGTenant();
var jArray = JArray.FromObject(list);  //here i get an empty json

Here is where i get the error, when i print the jArray.ToString() I get an empty json skeleton and am not getting my list converted into a jarray object thats what am expecting. This is real code.

1 Answers1

1

The issue you're seeing is because your properties are internal. To work around this, you could make them public and the class internal (which is the default if no modifier is specified), or you could place the JsonProperty attribute on each property:

class EGTenantCreated
{
    [JsonProperty]
    internal string id { get; set; }
    [JsonProperty]
    internal string subject { get; set; }
    [JsonProperty]
    internal EGData data { get; set; }
    [JsonProperty]
    internal string eventType { get; set; }
    [JsonProperty]
    internal string eventTime { get; set; }
    [JsonProperty]
    internal string dataVersion { get; set; }
    [JsonProperty]
    internal string metadataVersion { get; set; }
    [JsonProperty]
    internal string topic { get; set; }
}

class EGData
{
    [JsonProperty]
    internal string TenantId { get; set; }
    [JsonProperty]
    internal string TenantName { get; set; }
    [JsonProperty]
    internal string AdministratorEmail { get; set; }
    [JsonProperty]
    internal string ProductId { get; set; }
    [JsonProperty]
    internal string PackageInstanceId { get; set; }
    [JsonProperty]
    internal string CorrelationId { get; set; }
}

Try it online

ProgrammingLlama
  • 36,677
  • 7
  • 67
  • 86