如何将对象属性名称作为节点名称返回

时间:2018-04-25 16:00:59

标签: c# json rest api asp.net-web-api

我在返回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 - AXA

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&lt;来解决它字符串,型号&gt;

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

1 个答案:

答案 0 :(得分:0)

我通过使用 Dictionary&lt;字符串,对象&gt;

我在对象值中放置了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);
}
相关问题