ASP.NET MVC C# - 显示类属性名称而不是 JSON 中的属性名称

Posted

技术标签:

【中文标题】ASP.NET MVC C# - 显示类属性名称而不是 JSON 中的属性名称【英文标题】:ASP.NET MVC C# - Display class property names instead of the property names from JSON 【发布时间】:2021-07-23 19:50:33 【问题描述】:

在使用 JsonPropertyAttribute 反序列化从 API 获取的 JSON 对象后遇到困难

我成功地从 JSON 对象中获取了值


    "property name": "property value"

但我的问题是,而不是像这样显示类属性:


    "propertyName": "property value"

我只看到我正在获取的 JSON 中的属性名称:


    "property name": "property value"

有没有一种简单的方法让它显示类对象的属性名称,而不是我从 JSON 中提取的属性名称?

编辑:

这是该类的外观:

public class JsonObjectDto 
    [JsonProperty(PropertyName = "property name")]
    public string propertyName  get; set; 

我做了类似这个例子的事情:

public class HomeController : Controller 
    public ActionResult Index() 
        string jsonResponseString = "\"property name\":\"property value\"";
        JsonObjectDto result = JsonConvert.Deserialize<JsonObjectDto>(jsonResponseString);
        
        if(result != null) 
            return Ok(result);
        
        throw new Exception("fetch response error");
    

我希望实现的响应是让它像这样的输出:


    "propertyName": "property value"

【问题讨论】:

您在哪里查看属性名称? JSON 保持不变。班级保持不变。您是否再次序列化该类并查看原始属性名称?如果您已将它们标记为 [JsonProperty("property name")],这是有道理的,因为这会告诉序列化程序在 JSON 中使用该名称,两种方式。 你能复制一下你的类的结构吗 第二个代码块" property value"的第一个空格是错字吗? 相关:***.com/questions/44632448/… 我尝试了写在该链接中的答案,但发生在我身边的是,它根本没有获取 json 属性的值。 【参考方案1】:

只需从类中删除 JsonProperty 并在反序列化对象之前将“property name”替换为“propertyname”

    public ActionResult Index() 
    
        string jsonResponseString = "\"property name\":\"property value\"";
        jsonResponseString=jsonResponseString.Replace("property name","propertyName");
        JsonObjectDto result = JsonConvert.Deserialize<JsonObjectDto>(jsonResponseString);
                if(result != null) 
            return Ok(result);
        
        throw new Exception("fetch response error");
    

【讨论】:

以上是关于ASP.NET MVC C# - 显示类属性名称而不是 JSON 中的属性名称的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C# 属性指定给 ASP.NET MVC 中的 Json 对象?

在 C# ASP .Net MVC 中编辑十进制模型属性

C#获取类以及类下的方法(用于Asp.Net MVC)

C#获取类以及类下的方法(用于Asp.Net MVC)

AJAX 回调未显示成功消息 - ASP.NET MVC C#

如何使用 MVC3 ASP.NET 4.5 和 EF6 基于实体属性注释对 TextBoxFor 进行舍入