Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# JSON字符串的平面字典?_C#_.net - Fatal编程技术网

C# JSON字符串的平面字典?

C# JSON字符串的平面字典?,c#,.net,C#,.net,我有一本字典如下: private readonly Dictionary<string, string> _packetData; 我注意到它并没有在字符串的两端加双引号,而是这样做的 {"test":test123} 我做错了什么?输出中没有引号,因为您的格式字符串中没有包含引号,就像您使用键一样。我已经删除了您的括号([和]),因为它们表示JSON中的数组值,并且您的字典中有字符串值,因此不需要使用string.Join() var entries = _packetDat

我有一本字典如下:

private readonly Dictionary<string, string> _packetData;
我注意到它并没有在字符串的两端加双引号,而是这样做的

{"test":test123}

我做错了什么?

输出中没有引号,因为您的格式字符串中没有包含引号,就像您使用键一样。我已经删除了您的括号(
[
]
),因为它们表示JSON中的数组值,并且您的字典中有字符串值,因此不需要使用
string.Join()

var entries = _packetData.Select(d => string.Format("\"{0}\": [\"{1}\"]", d.Key, string.Join(",", d.Value)));
我还建议您使用Newtonsoft的优秀库,您可以在nuget上找到它。使用库而不是滚动您自己的实现更可靠,通常更安全,并且通常意味着您不需要编写那么多代码。在这种情况下,它将非常简单:

JsonConvert.SerializeObject(_packetData);

这将[]置于其周围,这会改变什么?请提供解释和您的答案。这是我遇到的第三个。如果其中一个值包含一个
,您希望发生什么?只需使用newtonsoft.json库。不要使用自己的json序列化程序。使用newtonsoft的json.NET
var entries = _packetData.Select(d => string.Format("\"{0}\": \"{1}\"", d.Key, d.Value));
JsonConvert.SerializeObject(_packetData);