序列化之前将string []转换为字符串

NaM*_*aMo 2 c# serialization json json.net

这是我的代码的一部分:

Dictionary<string, string[]> dict = new Dictionary<string, string[]>();
Run Code Online (Sandbox Code Playgroud)

我已将数据添加到字典中,并通过以下方式进行序列化:

JsonConvert.SerializeObject(dict)
Run Code Online (Sandbox Code Playgroud)

如果字符串数组中只有1个项目,我想将string []转换为string。

因此,如果输出为:

{
"Number": ["123"],
"Names": ["John", "Harry"]
}
Run Code Online (Sandbox Code Playgroud)

我希望它是:

{
"Number": "123",
"Names": ["John", "Harry"]
}
Run Code Online (Sandbox Code Playgroud)

由于“ 123”数组中只有1个项目。那么,如何解决呢?

Swe*_*per 7

一种方法是:

var newDict = dict.ToDictionary(x => x.Key, 
    x => x.Value.Length == 1 ? (object)x.Value.Single() : (object)x.Value);
Run Code Online (Sandbox Code Playgroud)

然后序列化newDict

大部分逻辑在于第二个参数。我根据长度决定是使用KVP值部分的单个元素还是整个字符串数组。