Với giải pháp của tôi, bạn có thể đổi tên mọi tài sản mà bạn muốn.
Tôi đã tìm thấy một phần của giải pháp ở đây và trên SO
public class JsonNetResult : ActionResult
{
public Encoding ContentEncoding { get; set; }
public string ContentType { get; set; }
public object Data { get; set; }
public JsonSerializerSettings SerializerSettings { get; set; }
public Formatting Formatting { get; set; }
public JsonNetResult(object data, Formatting formatting)
: this(data)
{
Formatting = formatting;
}
public JsonNetResult(object data):this()
{
Data = data;
}
public JsonNetResult()
{
Formatting = Formatting.None;
SerializerSettings = new JsonSerializerSettings();
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null)
throw new ArgumentNullException("context");
var response = context.HttpContext.Response;
response.ContentType = !string.IsNullOrEmpty(ContentType)
? ContentType
: "application/json";
if (ContentEncoding != null)
response.ContentEncoding = ContentEncoding;
if (Data == null) return;
var writer = new JsonTextWriter(response.Output) { Formatting = Formatting };
var serializer = JsonSerializer.Create(SerializerSettings);
serializer.Serialize(writer, Data);
writer.Flush();
}
}
Vì vậy, trong bộ điều khiển của tôi, tôi có thể làm điều đó
return new JsonNetResult(result);
Trong mô hình của tôi, bây giờ tôi có thể có:
[JsonProperty(PropertyName = "n")]
public string Name { get; set; }
Lưu ý rằng bây giờ, bạn phải thiết lập JsonPropertyAttribute
mọi thuộc tính bạn muốn tuần tự hóa.