我需要实现一个有点类似字典的自定义功能,但可以插入重复的键。所以基本上我需要从 Dictionary 中得到的是将对象序列化为以下 JSON 的可能性:
{
"One":"Value 1",
"Two":"Value x",
"One":"Value 10",
"Two":"Value 100"
}
正如你在上面看到的,我有重复的键......
有什么建议吗?重点是上面格式的 JSON 输出
Edit:
KeyValuePair<string,string>
不起作用!
这是结果:
[{"Key":"One","Value":"Two"},{"Key":"One","Value":"Two"}]
正如您所看到的,序列化为 JSON 会将 Key 和 Value 关键字放在一起,字典将用实际的键值替换 Key,用提供的值替换 Value。
您可以使用List<KeyValuePair<TKey, TValue>>
代替Dictionary<TKey, TValue>
。在你的情况下,这将是List<KeyValuePair<string, string>>
.
Edit:
如果您正在使用Json.NET
对于 JSON 的序列化,您可以使用自定义转换器实现所需的输出。答案here提供它(我做了轻微修改):
class KeyValuePairConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value,
JsonSerializer serializer)
{
var list = value as List<KeyValuePair<string, string>>;
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<KeyValuePair<string, string>>);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)