C# 属性强类型为松散类型的JSON序列化

C# 属性强类型为松散类型的JSON序列化,c#,asp.net-mvc,json,serialization,C#,Asp.net Mvc,Json,Serialization,我正在使用C#和have controller方法处理一个MVC项目,该方法返回一个JsonResult模型。该模型包含一个名为Value的属性 根据某些条件,该值可能是字符串值,如“C”或“N”。但在其他条件下,可能是这样 序列化模型时,是否可以检查属性是否为数字并将其序列化为数字(无引号)?如果它不是一个数字,那么把它变成一个字符串(引号) 例如,我有以下课程: public class Answer { public int Id{get;set;} public string

我正在使用C#和have controller方法处理一个MVC项目,该方法返回一个JsonResult模型。该模型包含一个名为Value的属性

根据某些条件,该值可能是字符串值,如“C”或“N”。但在其他条件下,可能是这样

序列化模型时,是否可以检查属性是否为数字并将其序列化为数字(无引号)?如果它不是一个数字,那么把它变成一个字符串(引号)

例如,我有以下课程:

public class Answer
{
   public int Id{get;set;}
   public string Value { get; set; }
}
假设我返回了一个列表:我希望有如下内容:(注意第一个答案“value”没有被引用;但是,第二个和第三个答案被引用

{
    "answers": [
        {
           "id": 1,
           "value": .5 <- No quote here.
        },
        {
           "id": 1,
           "value": "C" <- Quote here
        },
        {
           "id": 1,
           "value": "N" <- Quote here
        }
     ]
}
{
“答案”:[
{
“id”:1,

“value”:.5我认为您必须实现自定义JSON转换器。请参阅以下链接:


您测试了自己的解决方案吗?我想应该可以。是的,我已经测试了结果,因为值是模型上的一个字符串,当它被序列化时,它是“.5”而不是“.5”。这就是字符串在C#中的表示方式,它的值仅为.5。感谢您的评论。在将它发送到客户端时,我希望有条件地“引用”它。如果字符串值是数字,没有“引号”,否则我希望它被引用。如果不清楚我想做什么,我道歉。现在,它引用了每个值。