将字符串列表转换为JSON格式

9
如何将字符串列表转换
 List<string> keys = new List<string>() { "1-12VEXP", "1-124DH9"};

转换成与以下格式相同的JSON格式:
[["1-12VEXP"],["1-124DH9"]] 

在 .net 中。

我正在使用 Newtonsoft.Json。

非常感谢您的帮助。


1
你已经尝试过什么了吗?你正在使用哪个JSON序列化程序?(如果你还没有使用任何东西,你真的应该选择一个...) - Jon Skeet
@JonSkeet Newtonsoft.Json - Sachin Prasad
@newStackExchangeInstance,你能详细说明一下我该如何获取那种格式吗? - Sachin Prasad
1
请注意你所询问的内容——它们不是同一件事情。你的 C# 对象是包含两个字符串的集合。你的 JSON 对象是一个包含两个数组的数组,每个数组都包含一个项目。你想要哪一个? - Joe Enos
2
序列化永远不应涉及字符串操作 - 这正是它的全部意义,不必自己处理格式。因此,我不建议@newStackExchangeInstance的方法(它本来就不正确)。 - Joe Enos
显示剩余5条评论
2个回答

17

直接进行序列化不起作用,因为这些项目并不相等。如果您真的想要您所请求的内容,那么您需要一个包含数组的数组,然后对该数组进行序列化:

您可以通过先转换您的集合,然后进行简单的JSON序列化来实现:

string[][] newKeys = keys.Select(x => new string[]{x}).ToArray();

string json = JsonConvert.SerializeObject(newKeys);

我正在WebMethod中使用它。但是它显示“当前上下文中不存在 json 对象的名称”。?? 这是什么问题? - Shyam Dixit
@ShyamDixit 听起来你有一个不相关的问题,应该将其作为新问题发布。 - Joe Enos

0

使用 Newtonsoft.Json:

JsonConvert.SerializeObject(keys);

会给你 JSON。


3
很不幸,如果使用IList<string>类型,这将会给你返回诸如["1-12VEXP","1-124DH9"]这样的结果,很可能是无法使用的;但是如果他使用了具有属性的自定义类型的IList,则这种方法可以奏效。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接