JSON序列化列表<KeyValuePair >

我在Web API项目中使用了一个Dictionary,它像JSON中那样序列化:

{"keyname":{objectvalue},"keyname2:".... 

由于我有重复的键,我不能再使用Dictionary类型了,而现在我正在使用List<KeyValuePair>.

但这是以这种方式序列化:

 [{"Key":"keyname","Value":"objectvalue"}... 

有没有办法让List序列化与字典相同?

谢谢。

如果您使用Newtonsoft Json.NET库,则可以执行以下操作。

定义转换器以按您希望的方式编写键/值对列表:

 class MyConverter : JsonConverter { public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { List> list = value as List>; writer.WriteStartArray(); foreach (var item in list) { writer.WriteStartObject(); writer.WritePropertyName(item.Key); writer.WriteValue(item.Value); writer.WriteEndObject(); } writer.WriteEndArray(); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { // TODO... } public override bool CanConvert(Type objectType) { return objectType == typeof(List>); } } 

然后使用转换器:

 var keyValuePairs = new List> { new KeyValuePair("one", 1), new KeyValuePair("two", 2), new KeyValuePair("three", 3) }; JsonSerializerSettings settings = new JsonSerializerSettings { Converters = new [] {new MyConverter()} }; string json = JsonConvert.SerializeObject(keyValuePairs, settings); 

这会生成[{"one":1},{"two":2},{"three":3}]