Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert List<string> to JSON using C# and Newtonsoft

Tags:

json

c#

json.net

I have a List that I would like to convert to JSON using C# and Newtonsoft.

tags

[0]: "foo"
[1]: "bar"

Output to be:-

{"tags": ["foo", "bar"]}

Can anybody point me in the right direction please? I can convert the List to JSON okay but they key thing here is I need the "tags" part in the JSON which I do not get with a convert using JsonConvert.SerializeObject(tags).

like image 442
chillifoot Avatar asked Sep 18 '17 10:09

chillifoot


2 Answers

The below code wraps the list in an anonymous type, and thus generates what you are looking for.

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var list = new List<string> {"foo", "bar"};

            var tags = new {tags = list};

            Console.WriteLine(JsonConvert.SerializeObject(tags));

            Console.ReadLine();
        }
    }
}
like image 150
mjwills Avatar answered Sep 19 '22 04:09

mjwills


Arguably the easiest way to do this is to just write a wrapper object with your List<string> property

public class Wrapper
{
    [JsonProperty("tags")]
    public List<string> Tags {get; set; }
}

And then when serialized this gives the output you expect.

var obj = new Wrapper(){ Tags = new List<string>(){ "foo", "bar"} };
var json = JsonConvert.SerializeObject(obj);
Console.WriteLine(json);
// outputs: {"tags":["foo","bar"]}

Live example: http://rextester.com/FTFIBT36362

like image 31
Jamiec Avatar answered Sep 23 '22 04:09

Jamiec