我有一个my_list
类,其中一个方法接受一个复杂的对象。
ApiController
调试时,会调用此public class SampleController : ApiController
{
[Route("api/Sample/")]
[HttpPost]
public HttpResponseMessage GetSampleInfo([FromBody]SampleClass sampleClassObject)
{
// Some code
}
}
类方法,但在对象中作为Controller
传递的内容会显示新的Guid
(作为Guid
)。我首先使用 Postman 检查此方法。我尝试使用00000000-0000-0000-0000-000000000000
和x-www-form-urlencoded
传递对象。
我传递的内容 Postman :
application/json
我检查过像我这样的其他问题,但我已经尝试了解决方案,但我仍然将传递的{
"sampleID": "A9A999AA-AA99-9AA9-A999-9999999999AA",
"otherValue": 1
}
作为新的Guid
。
P.S。
Guid
如下所示:
SampleClass
更新
我使用了以下public class SampleClass
{
public Guid sampleID { get; set; }
public int otherValue { get; set; }
}
。
JsonConverter
并在public class GuidConverterCustom : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return typeof(Guid) == objectType;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
switch (reader.TokenType)
{
case JsonToken.Null:
return Guid.Empty;
case JsonToken.String:
string str = reader.Value as string;
if (string.IsNullOrEmpty(str))
{
return Guid.Empty;
}
else
{
return new Guid(str);
}
default:
throw new ArgumentException("Invalid token type");
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
if (Guid.Empty.Equals(value))
{
writer.WriteValue("");
}
else
{
writer.WriteValue((Guid)value);
}
}
}
中包含以下内容:
Global.asax.cs