我有一个控制器动作,有效地简单地返回我的模型的JsonResult.所以,在我的方法中,我有类似以下内容:
return new JsonResult(myModel);
Run Code Online (Sandbox Code Playgroud)
除了一个问题外,这很有效.模型中有一个日期属性,这似乎在Json结果中返回,如下所示:
"\/Date(1239018869048)\/"
Run Code Online (Sandbox Code Playgroud)
我应该如何处理日期,以便以我要求的格式退回?或者如何在脚本中处理上述格式?
我自己建立一个JObject,并希望将其作为ActionResult返回.我不想创建然后序列化数据对象
例如
public ActionResult Test(string id)
{
var res = new JObject();
JArray array = new JArray();
array.Add("Manual text");
array.Add(new DateTime(2000, 5, 23));
res["id"] = 1;
res["result"] = array;
return Json(res); //???????
}
Run Code Online (Sandbox Code Playgroud) 我有一个包含enum属性的类。
我的枚举:
public enum ToasterType
{
[EnumMember(Value = "success")]
success,
[EnumMember(Value = "error")]
error
}
Run Code Online (Sandbox Code Playgroud)
我的课 :
[Serializable]
public class ToastrMessage
{
[JsonConverter(typeof(StringEnumConverter))]
public ToasterType ToasterType { get; set; }
// bla bla bla
}
Run Code Online (Sandbox Code Playgroud)
通过Json返回课程:
public async Task<ActionResult> Authentication()
{
return Json(this.ToastrMessage(ToasterType.success));
}
Run Code Online (Sandbox Code Playgroud)
和输出:
为什么1呢?
但我需要以下内容:
ToasterType: success
Run Code Online (Sandbox Code Playgroud) 我正在开发2个Web应用程序; A&B.现在我在两个Web应用程序中都有一个名为CRUDOutput的共享类: -
public class CRUDOutput
{
public Operation4 operation { get; set; }
}
public class Operation4
{
public Result result { get; set; }
public string name { get; set; }
}
public class Result
{
public string status { get; set; }
public string message { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在在Web应用程序中我正在返回以下内容: -
[HttpPost]
public ActionResult CreateResource(CreateResource cr)
{
List<CRUDOutput> co = new List<CRUDOutput>();
co.Add(JsonConvert.DeserializeObject<CRUDOutput>(crudoutput));
co.Add(JsonConvert.DeserializeObject<CRUDOutput>(crudoutput2));
return Json(JsonConvert.SerializeObject(co));
}
Run Code Online (Sandbox Code Playgroud)
现在从Web应用程序B,我调用的操作方法如下: -
try
{
using (WebClient wc = new …Run Code Online (Sandbox Code Playgroud) 我正在使用第三方REST API,其中一个字段(类型string)具有一组已知的值,我已enum在我的代码中建模.在StringEnumConverter如所描述的从JSON.NET正确串行化所有但这些值中的一个[EnumMemberAttribute]注释.特别是对于此字段,REST API将null值转换为第三方系统中的"系统默认值"; 但是,当JSON.NET序列化时,它使用成员名称而不是注释中描述的值.我知道我可以编写一个自定义转换器来处理这个,但我的问题是,如果有一种方法可以让它在没有一个的情况下工作,因为它只是null没有正确序列化的值?
将enum在我的代码我已经定义:
[JsonConverter(typeof(StringEnumConverter))]
public enum InitialScanLevel
{
[EnumMember(Value = null)]
SystemDefault,
[EnumMember(Value = "0")]
ModelDeviceOnly,
[EnumMember(Value = "1")]
InitialAppPopulation,
[EnumMember(Value = "2")]
DiscoverSslCerts,
[EnumMember(Value = "3")]
DiscoverOpenPorts,
[EnumMember(Value = "4")]
AdvancedPortDiscovery,
[EnumMember(Value = "5")]
DeepDiscovery
}
Run Code Online (Sandbox Code Playgroud)
对于InitialScanLevel.SystemDefault生成的JSON(不是第三方API期望的)
{
other fields...,
"initialScanLevel":"SystemDefault",
other fields...
}
Run Code Online (Sandbox Code Playgroud)
但应该是
{
other fields...,
"initialScanLevel":null,
other fields...
}
Run Code Online (Sandbox Code Playgroud)
对于InitialScanLevel.DeepDiscovery生成的JSON(这是第三方API期望的)
{
other fields...,
"initialScanLevel":"5",
other fields... …Run Code Online (Sandbox Code Playgroud)