c# - json序列化格式化

标签 c# json serialization json.net

我正在尝试使用 json.net 序列化一组对象

对象看起来像这样:

public class TaxBand
{   
    public TaxBand(string county, decimal taxPercentage)
    {
        County = county;
        Tax = taxPercentage;
    }

    public string County { get; private set; }
    public decimal Tax { get; private set; }
}

它们包含在这样的结构中:

var data = new Dictionary<string, List<TaxBand>>();
data = PopulateDataset();
string json = JsonConvert.SerializeObject(data, Formatting.Indented);

这会生成如下所示的 json:

{
  "North": [
    {
      "County": "Merseyside",
      "Tax": 5.0
    },
    {
      "County": "Greater Manchester",
      "Tax": 6.0
    }
  ],
  "South": [
    {
      "County": "Greater London",
      "Tax": 5.5
    },
    {
      "County": "Surry",
      "Tax": 6.2
    }
  ]
}

是否可以生成如下所示的 json:

{
  "North": 
    {
      "Merseyside": 5.0,
      "Greater Manchester" : 6.0
    },
  "South": 
    {
      "Greater London": 5.5,
      "Surry": 6.2
    }
}

我很乐意考虑改变任何对象的形状,或者确实使用不同的序列化库

最佳答案

在一些Linq的帮助下

var data = new Dictionary<string, List<TaxBand>>();
data = PopulateDataset();

var data2 = data.ToDictionary(kv => kv.Key, 
                              kv => kv.Value.ToDictionary(t=>t.County,t=>t.Tax) );

var s = JsonConvert.SerializeObject(data2,Newtonsoft.Json.Formatting.Indented);

输出:

{
  "North": {
    "Merseyside": 5.0,
    "Greater Manchester": 6.0
  },
  "South": {
    "Greater London": 5.5,
    "Surry": 6.2
  }
}

关于c# - json序列化格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11774926/

相关文章:

c# - ASP.NET 浏览器定义文件不工作

c# - 我可以在没有模型绑定(bind)的情况下检查模型状态吗?

c# - 根据用户输入以编程方式创建 Hangfire cron 表达式

java - 打印数组时如何去掉groovy中的括号和逗号

json - ELM 解析嵌套的 json

java - 电子表格程序

c# - 使用 LINQ 转换投影列表返回空值列表?

android - JsonArray解析

c# - C#中序列化派生类的问题

JSONMarshal : Is it possible to serialize/desrialize into/from 'plain' JSON (without metadata)?