首页 > 解决方案 > 如何将我的对象属性名称作为节点名称返回

问题描述

我在返回 api 结果时被卡住了,我有一个像

public partial class Sample
{
    [JsonProperty("classificator")]
    public List<Classificator> Classificator { get; set; }
}

public partial class Classificator
{
    [JsonProperty("Value")]
    public string Value { get; set; }

    [JsonProperty("Description")]
    public string Description { get; set; }
}

假设GetJson方法从数据库中检索我们的数据,有 2 条记录,数据如下

-- 值 - 描述

1-A-安盛

2- B - BXA

response = GetJson(); // this method gets data from db 
return Content(HttpStatusCode.OK, response);

当我返回这个时,就像

{
    "classificator": [{
            "Value": "A",
            "Description": "AXA"
        }, {
            "Value": "B",
            "Description": "BXA"
        }
    ]
}

但我想看看,我想看到下面的结果;

{
    "classificator": [{
            "A": "AXA"
        }, {
            "B" : "BXA"
        }
    ]
}

我想问你,也许有人知道一个好的做法或文档(教程)。

我通过使用 Dictionary < string, model >来解决它

但我需要返回一个巨大的嵌套字段,我无法为所有不同的节点实现这个解决方案。

标签: c#jsonrestapiasp.net-web-api

解决方案


我通过使用Dictionary< string, object >解决了

我在一个对象值中放置了 2 个嵌套对象。就我而言,它看起来有些复杂,我重构并尝试通过可读的字典层次结构工作。

基本上对于这个例子,它如下所示,

Dictionary<string, object> fooDict = new Dictionary<string, object>();

fooDict.Add("A", "AXA"); // in my case I put 2 nested object to value field
fooDict.Add("B", "BXA"); 

var serializedObject = JsonConvert.SerializeObject(fooDict);

using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\xxx\result.txt", true))
{
    file.WriteLine(serializedObject);
}

推荐阅读