Если вы используете библиотеку Newtonsoft Json.NET, вы можете сделать следующее.
Определить конвертер, чтобы написать список пар ключ/значение, как вы хотите:
class MyConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
List<KeyValuePair<string, object>> list = value as List<KeyValuePair<string, object>>;
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, object>>);
}
}
Затем использовать преобразователь:
var keyValuePairs = new List<KeyValuePair<string, object>>
{
new KeyValuePair<string, object>("one", 1),
new KeyValuePair<string, object>("two", 2),
new KeyValuePair<string, object>("three", 3)
};
JsonSerializerSettings settings = new JsonSerializerSettings { Converters = new [] {new MyConverter()} };
string json = JsonConvert.SerializeObject(keyValuePairs, settings);
Это создает [{"one":1},{"two":2},{"three":3}]
Если у вас есть дубликат ключи, нет. –
@ user250773: можете ли вы предоставить код и выход ... чтобы мы могли попытаться помочь вам. –
Возможный дубликат [Сериализация списка> как JSON] (https://stackoverflow.com/questions/41503024/serialize-listkeyvaluepairstring-string-as-json) –
Matt