Vengat
Vengat

Reputation: 235

Form the JSON object - serialization C#

"fields": [
   {
       "field": {
            "name": "SMS",
            "value": "Yes"
       }
   },
   {
       "field": {
            "name": "Email",
            "value": ""
        }
    },
    {
        "field": {
            "name": "Total",
            "value": ""
        }
    },
]

I have tried to form the JSON format like above, so i formed the class like below. While serialization it does not return expected form, how can i achieve this one.

public class Test
{
    public List<Field> fields;
}
public class Field
{
    public string name { get; set; }
    public string value { get; set; }
}

Response:

"fields": [{
                "name": "SMS",
                "value": "Yes"
            }, {
                "name": "Email",
                "value": ""
            },{
                "name": "Total",
                "value": ""
            }]

Upvotes: 0

Views: 128

Answers (3)

Gusman
Gusman

Reputation: 15161

You just missed a class level:

public class Test
{
    public List<FieldHolder> fields;
}

public class FieldHolder
{
    public Field field { get; set; }
}

public class Field
{
    public string name { get; set; }
    public string value { get; set; }
}

Upvotes: 0

Aleks Andreev
Aleks Andreev

Reputation: 7054

You can customize resulting JSON object with anonymous types and LINQ. Please try this code:

var test = new Test {fields = new List<Field>()};
test.fields.Add(new Field {name = "f1", value = "v1"});
test.fields.Add(new Field {name = "f2", value = "v2"});

var json = JObject.FromObject(new { fields = test.fields.Select(f => new {field = f}).ToArray() })
    .ToString();

A json variable would be:

{
  "fields": [
    {
      "field": {
        "name": "f1",
        "value": "v1"
      }
    },
    {
      "field": {
        "name": "f2",
        "value": "v2"
      }
    }
  ]
}

Upvotes: 1

Sv Sv
Sv Sv

Reputation: 345

Use this website http://json2csharp.com and generate all the classes automatically. Just copy-paste your json there.

Upvotes: 3

Related Questions