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



我有一个我想使用C#和newtonsoft转换为JSON的列表。

标签

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

输出为: -

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

有人可以指向正确的方向吗?我可以将列表转换为JSON好的,但是他们关键的是我需要JSON中的"标签"部分,而我不使用JsonConvert.SerializeObject(tags)进行转换。

以下代码将列表包装在匿名类型中,因此生成了您要寻找的内容。

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

可以说,最简单的方法就是用 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

使用这样的使用。

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

输出:

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

希望这会有所帮助。

创建一个单独的类:

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

然后致电:

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

您可以使用匿名对象像这样包装列表:

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

您可以使用此。

static void  Main(string[] args)
    {
        List<string> messages = new List<string>();
        messages.Add("test");
        messages.Add("test 2");
        Items data = new Items { items = messages };
        string output = JsonConvert.SerializeObject(data);
        JObject jo = JObject.Parse(output);
        Console.WriteLine(jo);
    }
public class Items
{
   public List<string> items { get; set; }
}

生产:

{
  "items": [
    "test",
    "test 2"
  ]
}

相关内容

  • 没有找到相关文章

最新更新