属性强类型到松散类型的JSON序列化

本文关键字:JSON 序列化 类型 强类型 属性 | 更新日期: 2023-09-27 18:00:29

我正在使用C#开发一个MVC项目,并拥有返回JsonResult模型的控制器方法。该模型包含一个名为Value的属性。

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

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

例如,我有以下类:

public class Answer
{
   public int Id{get;set;}
   public string Value { get; set; }
}

假设我返回了一个列表:我想要下面这样的东西:(注意,第一个答案没有引用"值";但是,第二个和第三个答案被引用了。

{
    "answerswers": [
        {
           "id": 1,
           "value": .5 <- No quote here.
        },
        {
           "id": 1,
           "value": "C" <- Quote here
        },
        {
           "id": 1,
           "value": "N" <- Quote here
        }
     ]
}

当它回到服务器端(反序列化)时,我只喜欢字符串表示。

属性强类型到松散类型的JSON序列化

我认为您必须实现一个自定义的JSON转换器。请参阅以下链接:

http://james.newtonking.com/json/help/index.html?topic=html/CustomJsonConverter.htm