我有一个我想使用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"
]
}