Как я могу вернуть имя свойства моего объекта в качестве имени узла - PullRequest
0 голосов
/ 25 апреля 2018

Я застрял при возврате 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

, но мне нужно вернуть огромное вложенное поле. Я не могу реализовать это решение для всех разных узлов.

1 Ответ

0 голосов
/ 06 мая 2018

Я решил с помощью Словарь <строка, объект>

Я поместил 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...