【问题标题】:Property strongly type to loosely typed JSON serialize属性强类型到松散类型的 JSON 序列化
【发布时间】:2014-04-26 14:32:42
【问题描述】:

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

根据某些条件,Value 可能是字符串值,例如“C”或“N”。但在其他条件下,它可能是 0.5。

在序列化模型时,是否可以检查属性是否为数字以将其序列化为数字(无引号)?如果不是数字,则将其设为字符串(引号)?

例如我有以下课程:

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

假设我返回了这些列表:我想要如下所示:(注意第一个答案“值”没有被引用;但是,第二个和第三个答案被引用了。

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

当它返回服务器端(反序列化)时,我只想要字符串表示。

【问题讨论】:

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

标签: c# asp.net-mvc json serialization


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-12
    • 2020-02-19
    • 2021-08-28
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多