如何使用C#和json.net将存储在C#字典中的数据序列化为json对象?

如何使用C#和json.net将存储在C#字典中的数据序列化为json对象?,c#,asp.net,json,.net-4.0,json.net,C#,Asp.net,Json,.net 4.0,Json.net,我有一些存储在C#字典中的数据。现在我想将这个字典对象序列化为我在下面指定的json格式 这是我的C#代码: 但我需要的格式是: { GetQuestions:[ { "s1":"Q1,Q2", "s2":"Q3,Q4", "s3":"Q5,Q6", }] } 生成的输出中需要的更新是…(关于我所需的格式) 我不需要双重报价的问题 我想创建getQuestions作为数组对象 反序列化(如果需要) StudInfo=JsonConvert.Deserialize

我有一些存储在C#字典中的数据。现在我想将这个字典对象序列化为我在下面指定的json格式

这是我的C#代码:

但我需要的格式是:

{
    GetQuestions:[
{
    "s1":"Q1,Q2",
    "s2":"Q3,Q4",
    "s3":"Q5,Q6",
}]
}
生成的输出中需要的更新是…(关于我所需的格式)

  • 我不需要双重报价的问题
  • 我想创建getQuestions作为数组对象
  • 反序列化(如果需要)

    StudInfo=JsonConvert.Deserialize(serializedString);
    
    这将使用泛型和运行时安全性将其转换回StudInfo对象

    改变
    Public Dictionary
    Public List
    将在序列化后强制将其放入数组中

    反序列化(如果需要)

    StudInfo=JsonConvert.Deserialize(serializedString);
    
    这将使用泛型和运行时安全性将其转换回StudInfo对象

    改变
    Public Dictionary
    Public List
    将在序列化后强制将其放入数组。

    令人恼火的是,我发现Json.NET在将对象封装到数组中时有点挑剔,有时只封装一个对象,有时不封装。但是,如果存在多个问题,则始终会进行包装。您的代码生成了以下输出{“GetQuestions”:{“GetQuestions”:{“s1”:“Q1,Q2”,“s2”:“Q1,Q3”,“s3”:“Q4,Q5”}}}}}}}}whoops删除匿名对象部分:string serializedString=JsonConvert.Serialize(studDetails);是的,我只是放了你的行…但是JsonConvert中没有名为Serialize的方法。所以我修改了字符串jsonString=JsonConvert.SerializeObject(new{GetQuestions=studDetails},Formatting.Indented);在我的问题中提到的源代码中,我知道,我不认为可以从键中删除双引号,这一点应该毫不重要,因为任何值得一试的json序列化程序都会找到它,就像将它变成数组一样,将您的对象更改为列表,使其成为一个数组。我发现Json.NET在将对象包装为数组时并不十分挑剔,有时只使用一个对象包装,有时不使用。但是,如果存在多个问题,则始终会进行包装。您的代码生成了以下输出{“GetQuestions”:{“GetQuestions”:{“s1”:“Q1,Q2”,“s2”:“Q1,Q3”,“s3”:“Q4,Q5”}}}}}}}}whoops删除匿名对象部分:string serializedString=JsonConvert.Serialize(studDetails);是的,我只是放了你的行…但是JsonConvert中没有名为Serialize的方法。所以我修改了字符串jsonString=JsonConvert.SerializeObject(new{GetQuestions=studDetails},Formatting.Indented);在我的问题中提到的源代码中,我明白了,我不认为可以从键中删除双引号,这一点应该毫不重要,因为任何值得使用的json序列化程序都会找到它,至于将其设置为数组,请将对象更改为将其设置为数组的列表
    {
      "GetQuestions": {
        "s1": "Q1,Q2",
        "s2": "Q1,Q3",
        "s3": "Q4,Q5"
      }
    }
    
    {
        GetQuestions:[
    {
        "s1":"Q1,Q2",
        "s2":"Q3,Q4",
        "s3":"Q5,Q6",
    }]
    }
    
    string serializedString = JsonConvert.SerializeObject(studDetails);
    
    StudInfo = JsonConvert.Deserialize<StudInfo>(serializedString);