使用C#和Newtonsoft将List <string>转换为JSON

时间:2017-09-18 10:40:45

标签: c# json json.net

我有一个List,我想使用C#和Newtonsoft转换为JSON。

标签

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

输出为: -

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

有人能指出我正确的方向吗?我可以将List转换为JSON,但是关键是我需要JSON中的“tags”部分,我没有使用JsonConvert.SerializeObject(tags)进行转换。

5 个答案:

答案 0 :(得分:5)

以下代码以匿名类型包装列表,从而生成您要查找的内容。

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();
        }
    }
}

答案 1 :(得分:2)

可以说最简单的方法就是用List<string>属性写一个包装器对象

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

然后在序列化时,这会给出您期望的输出。

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

实例:http://rextester.com/FTFIBT36362

答案 2 :(得分:1)

像这样创建一个单独的类:

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

    public TagList(params string[] tags)
    {
        Tags = tags.ToList();
    }
}

然后致电:

JsonConvert.SerializeObject(new TagList("Foo", "Bar"));

答案 3 :(得分:1)

像这样使用。

var data = new { tags = new List<string> { "foo", "bar" } };
var str = Newtonsoft.Json.JsonConvert.SerializeObject(data);

<强>输出:

{“tags”:[“foo”,“bar”]}

希望这有帮助。

答案 4 :(得分:0)

您可以使用anonymous object来包装您的列表:

JsonConvert.SerializeObject(new {Tags = tags});