1

I have JSON object that I want to convert to C# object.

To create class in C# I use http://json2csharp.com/ page.

But the converter doesn't do well.

My JSON object:

{
"data": {
    "krs_podmioty.data_sprawdzenia": "2016-12-22T05:36:21",
    "krs_podmioty.regon": "0",
    "krs_podmioty.adres_lokal": "",
    "krs_podmioty.adres_miejscowosc": "Warszawa",
    "krs_podmioty.liczba_czlonkow_komitetu_zal": 0,
}
}

I receive Object looking like below:

public class Data
{
    public DateTime __invalid_name__krs_podmioty.data_sprawdzenia { get; set; }
    public string __invalid_name__krs_podmioty.regon { get; set; }
    public string __invalid_name__krs_podmioty.adres_lokal { get; set; }
    public string __invalid_name__krs_podmioty.adres_miejscowosc { get; set; }
    public int __invalid_name__krs_podmioty.liczba_czlonkow_komitetu_zal { get; set; }
}

I don't know why data have krs_podmioty.object.

I try to cut __invalid_name__krs_podmioty but then JsonConvert.DeserializeObject<Data> from package JSON.Net didn't work.

Any one know what is wrong? What should I do to fix it?

Adriano
  • 874
  • 2
  • 11
  • 37

2 Answers2

4

Please see if this works for you. It's important to have a root object which then contains the data.

Also, using the JsonPropertyAttribute helps in cases where the property names differ from the actual JSON property names.

public class Rootobject
{
    public Data data { get; set; }
}

public class Data
{
    [JsonProperty(PropertyName = "krs_podmioty.data_sprawdzenia")]
    public DateTime krs_podmiotydata_sprawdzenia { get; set; }

    [JsonProperty(PropertyName = "krs_podmioty.regon")]
    public string krs_podmiotyregon { get; set; }

    [JsonProperty(PropertyName = "krs_podmioty.adres_lokal")]
    public string krs_podmiotyadres_lokal { get; set; }

    [JsonProperty(PropertyName = "krs_podmioty.adres_miejscowosc")]
    public string krs_podmiotyadres_miejscowosc { get; set; }

    [JsonProperty(PropertyName = "krs_podmioty.liczba_czlonkow_komitetu_zal")]
    public int krs_podmiotyliczba_czlonkow_komitetu_zal { get; set; }
}

If it does not, please show where you get the JSON from and show the structure of the objects you serialize to JSON.

Thomas Flinkow
  • 4,845
  • 5
  • 29
  • 65
2

I have tried this code. This works for me:

public class Data
{
    [JsonProperty(PropertyName = "krs_podmioty.data_sprawdzenia")]
    public DateTime data_sprawdzenia { get; set; }
    [JsonProperty(PropertyName = "krs_podmioty.regon")]
    public string regon { get; set; }
    [JsonProperty(PropertyName = "krs_podmioty.adres_lokal")]
    public string adres_lokal { get; set; }
    [JsonProperty(PropertyName = "krs_podmioty.adres_miejscowosc")]
    public string adres_miejscowosc { get; set; }
    [JsonProperty(PropertyName = "krs_podmioty.liczba_czlonkow_komitetu_zal")]
    public int liczba_czlonkow_komitetu_zal { get; set; }
}

 var json = "{ \"data\": { \"krs_podmioty.data_sprawdzenia\": \"2016 -12-22T05:36:21\", \"krs_podmioty.regon\": \"0\", \"krs_podmioty.adres_lokal\": \"\", \"krs_podmioty.adres_miejscowosc\": \"Warszawa\", \"krs_podmioty.liczba_czlonkow_komitetu_zal\": 0,} }";

 var t = JsonConvert.DeserializeObject<Data>(json);
Praneet Nadkar
  • 823
  • 7
  • 16