Как установить имя поля json из значения свойства во время выполнения .net

Как сериализовать объект в json, установив имя поля json из значения свойства объекта?

Я использую NewtonsoftJson в качестве библиотеки json.

public class Data
{
  public string Question {get;set;} = "Test Question?";
  public string Answer {get;set;} = "5";
}

ожидаемый вывод json:

{
  "Test Question?": {
    "Answer": "5"
  }
}

Какую библиотеку JSON вы используете? Newtonsoft или System.Text.Json?

gunr2171 09.01.2023 15:04

что ты уже испробовал? Где ты застрял?

Peter Csala 09.01.2023 15:06

Можете ли вы изменить модель? Я полагаю, вы могли бы получить этот результат с помощью словаря.

Fildor 09.01.2023 15:06

Отвечает ли это на ваш вопрос? Перезаписать имя свойства Json в c#

gunr2171 09.01.2023 15:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Для этого можно использовать словарь:

JsonSerializer.Serialize(
    new Dictionary<string, object>
    {
        {
            data.Question, new
            {
                data.Answer
            }
        }
    });

или, если вы используете Newtonsoft, вы можете использовать JsonConvert.SerializeObject метод сериализации с тем же вводом.

Хорошо, но ОП использует Json.NET, а не System.Text.Json.

Peter Csala 09.01.2023 15:11

Я добавил версию Newtonsoft, хотя я думаю, что вопрос был в основном о том, как построить такой объект, а не о том, как вообще сериализовать объект.

fbede 09.01.2023 15:16

Просто для записи

var data = new Data();

string json = new JObject { [data.Question] = new JObject { ["Answer"] = data.Answer } }.ToString();

Другие вопросы по теме