我有一个List,我想使用C#和Newtonsoft转换为JSON。
标签
[0]: "foo"
[1]: "bar"
输出为: -
{"tags": ["foo", "bar"]}
有人能指出我正确的方向吗?我可以将List转换为JSON,但是关键是我需要JSON中的“tags”部分,我没有使用JsonConvert.SerializeObject(tags)
进行转换。
答案 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"]}
答案 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});