Я новичок в JSON, пожалуйста, помогите!
Я пытаюсь сериализовать List как JSON
В настоящее время:
[{"Key":"MyKey 1","Value":"MyValue 1"},{"Key":"MyKey 2","Value":"MyValue 2"}]
Ожидается:
[{"MyKey 1":"MyValue 1"},{"MyKey 2":"MyValue 2"}]
Я привел несколько примеров из этого и этого.
Это мой KeyValuePairJsonConverter: JsonConverter
public class KeyValuePairJsonConverter : 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.ToString());
writer.WriteValue(item.Value.ToString());
writer.WriteEndObject();
}
writer.WriteEndArray();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(List);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var jsonObject = JObject.Load(reader);
var target = Create(objectType, jsonObject);
serializer.Populate(jsonObject.CreateReader(), target);
return target;
}
private object Create(Type objectType, JObject jsonObject)
{
if (FieldExists("Key", jsonObject))
{
return jsonObject["Key"].ToString();
}
if (FieldExists("Value", jsonObject))
{
return jsonObject["Value"].ToString();
}
return null;
}
private bool FieldExists(string fieldName, JObject jsonObject)
{
return jsonObject[fieldName] != null;
}
}
Я вызываю его из метода WebService следующим образом
List valuesList = new List();
Dictionary valuesDict = SomeDictionaryMethod();
foreach(KeyValuePair keyValue in valuesDict)
{
valuesList.Add(keyValue);
}
JsonSerializerSettings jsonSettings = new JsonSerializerSettings { Converters = new [] {new KeyValuePairJsonConverter()} };
string valuesJson = JsonConvert.SerializeObject(valuesList, jsonSettings);
Подробнее здесь: https://stackoverflow.com/questions/415 ... ng-as-json
Сериализовать List> как JSON ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение