c# - 没有属性名称的 JSON.NET 序列化字典

标签 c# json json.net

<分区>

大家

我有一个字典属性名称的 json 序列化问题

这是我的代码:

public class MyClass
{
    public string A { get; set; }

    public string B { get; set; }

    public Dictionary<string, C> CS { get; set; }
}

public class C
{
    public string C1 { get; set; }

    public string C2 { get; set; }
}

MyClass myObject = new MyClass()
{
    A = "A_Value",
    B = "B_Value",
    CS = new Dictionary<string, C>
    {
        {"CS1", new C() { C1 = "CS1_C1_Value", C2 = "CS1_C2_Value" } },
        {"CS2", new C() { C1 = "CS2_C1_Value", C2 = "CS2_C2_Value" } }
    }
};

JsonConvert.SerializeObject(myObject);

我会得到结果:

{
   "A":"A_Value",
   "B":"B_Value",
   "CS":{
      "CS1":{
         "C1":"CS1_C1_Value",
         "C2":"CS1_C2_Value"
      },
      "CS2":{
         "C1":"CS2_C1_Value",
         "C2":"CS2_C2_Value"
      }
   }
}

如何在没有字典属性名称的情况下序列化它,例如:

{
   "A":"A_Value",
   "B":"B_Value",
   "CS1":{
      "C1":"CS1_C1_Value",
      "C2":"CS1_C2_Value"
   },
   "CS2":{
      "C1":"CS2_C1_Value",
      "C2":"CS2_C2_Value"
   }
}

我尝试去掉序列化结果的属性,然后添加序列化字典数据

有更简单的方法解决吗?

最佳答案

如果你愿意把字典转换成Dictionary<string, object>你可以使用 [JsonExtensionData]属性

public class MyClass
{
    public string A { get; set; }

    public string B { get; set; }

    [JsonExtensionData]
    public Dictionary<string, object> CS { get; set; }
}

关于c# - 没有属性名称的 JSON.NET 序列化字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45347453/

相关文章:

c# - 任何基于 WPF 的 Markdown 渲染器?

javascript - 将此 JSON 重写为 jQuery data() 的更好方法是什么?

c# - 使用嵌入在字符串值中的子对象反序列化 JSON 字符串

c# - Newtonsoft JsonConvert.DeserializeObject 如何忽略空对象

c# - 如何使用 Linq to ADO.NET Entity Framework 进行全文搜索 (FTS)?

c# - 异步/等待和返回任务是否相同?

javascript - 如何在 jQuery 中解析 JSON

php - json 字符串化为 php

当表情符号在数据中时,JSON 字符串被截断

c# - 如何在Windows Phone中用一个单词写出不同颜色的文本?