Dictionary<string, int> C# 的 json 文件输出错误

Gab*_*537 1 c# json dictionary

我试图从 C# 将字典写入 json 文件,但输出错误,这是我的方法

public static List<Dictionary<string, int>> CreateGlobalVectorAndRareVectors(List<Article> articleList)
        {
            List<Dictionary<string, int>> vectoriRari = new List<Dictionary<string, int>>();


            int i = 0;
            foreach (Article art in articleList)
            {
                
                Dictionary<string, int> aux = new Dictionary<string, int>();
                string[] title = art.Title1.Split(delimiterChars);
                string[] text = art.Text1.Split(delimiterChars);
                string[] completeText = title.Concat(text).ToArray();
                completeText = completeText.Where(x => !string.IsNullOrEmpty(x)).ToArray();

                foreach (var word in completeText)
                {
                    if (!aux.ContainsKey(word))
                    {
                        aux.Add(word, 1);
                    }
                    else
                    {
                        aux.TryGetValue(word, out int tempValue);
                        aux[word] = tempValue + 1;
                    }
                }
                string json = JsonConvert.SerializeObject(aux);
                using (StreamWriter sw = File.CreateText(@".\..\..\..\OutputData\" + art.FileNames[i] + ".json"))
                {
                    JsonSerializer serializer = new JsonSerializer();
                    serializer.Serialize(sw, json);
                }

                i++;

                vectoriRari.Add(aux);
            }


            return vectoriRari;
        }
Run Code Online (Sandbox Code Playgroud)

这是我想要得到的输出

{
    "USA": 1,
    "Microsoft": 1,
    "sees": 1
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出

{
    \"USA\": 1,
    \"Microsoft\": 1,
    \"sees\": 1
}

Run Code Online (Sandbox Code Playgroud)

问题是如何摆脱 \ ?我正在使用 Newtonsoft.Json 库来格式化 json 文件。

Jon*_*eet 5

您将其序列化两次:

string json = JsonConvert.SerializeObject(aux);
using (StreamWriter sw = File.CreateText(@".\..\..\..\OutputData\" + art.FileNames[i] + ".json"))
{
    JsonSerializer serializer = new JsonSerializer();
    serializer.Serialize(sw, json);
}
Run Code Online (Sandbox Code Playgroud)

您已经从第一行获取了 JSON - 然后在稍后的调用中将该 JSON 编码为 JSON 字符串Serialize

你可以让这变得更简单:

string json = JsonConvert.SerializeObject(aux);
// TODO: Consider using Path.Combine instead
string path = @"..\..\..\OutputData\" + art.FileNames[i] + ".json";
File.WriteAllText(path, json);
Run Code Online (Sandbox Code Playgroud)