将嵌套字典写入 JSON?

时间:2021-01-18 18:01:24

标签: c# json winforms dictionary nested

我有一个嵌套字典,例如我想写入 json 的 Dictionary1>。 Dictionary2 是从文本框创建的,例如: Dictionary2

我尝试将这些数据写入 JSON,但是只有来自 Dictionary1 的 double 出现在 json 中。

public void Write_JSON()
        {
            dictionary_JSON.Clear();
            Dictionary<string, string> tempdic = new Dictionary<string, string>();
            tempdic.Clear();
            foreach (double d in available_doubles_values)
            {
                foreach (TextBox t in panel1.Controls.OfType<TextBox>())
                {
                    tempdic.Add(t.Name, t.Text);
           
                }
                dictionary_JSON.Add(d, tempdic);
                tempdic.Clear();
            }

            string json = JsonConvert.SerializeObject(dictionary_JSON, Formatting.Indented);

            File.WriteAllText(@"limits.json", json);
        }

然而在 json 中显示的是:

"double1": {}, 
"double2": {}, 
"double3": {}, 

dictionary2 tempdic 没有被写入。我错过了什么?

1 个答案:

答案 0 :(得分:2)

当您执行 Clear 时,它会删除字典中的元素,这就是为什么您在 json 中没有任何内容的原因。每次输入第一个 for 时,您都需要重新分配一个新的 Dictionary。 我还用 dictionary_JSON 替换了 test_limits_json 因为这可能是重点。 试试这个:

public void Write_JSON()
    {
        dictionary_JSON.Clear();
        
        
        foreach (double d in available_doubles_values)
        {
            Dictionary<string, string> tempdic = new Dictionary<string, string>();
            foreach (TextBox t in panel1.Controls.OfType<TextBox>())
            {
                tempdic.Add(t.Name, t.Text);
       
            }
            dictionary_JSON.Add(d, tempdic);
            
        }

        string json = JsonConvert.SerializeObject(dictionary_JSON, Formatting.Indented);

        File.WriteAllText(@"limits.json", json);
    }