Добавить свойство динамически в строку json? - PullRequest
1 голос
/ 06 апреля 2020

Мне нужно динамически добавить некоторые свойства в строку json. Вот код, который я использую:

// set as empty json object
RequestMessage = "{}";
dynamic d = JsonConvert.DeserializeObject(RequestMessage);
d.Request = JsonConvert.SerializeObject(request);
d.RequestOptions = JsonConvert.SerializeObject(requestOptions);
RequestMessage = JsonConvert.SerializeObject(d);

Это может добавить Request и RequestOptions к d, а затем сериализовать d обратно в json строку.

Это прекрасно работает, если я знаю Имена свойств, в данном случае, это Request и RequestOptions.

Вопрос: есть ли способ сделать это, ЕСЛИ имя свойства является переменной? например, что-то вроде:

private string GetJson(string name, object obj)
{
    // name is "Request"
    // object is request
    ......
    return RequestMessage;
}

Возможно ли это? * Я использую. net + ньютон json.

спасибо

1 Ответ

1 голос
/ 06 апреля 2020

Конечно, вы можете динамически добавлять свойства в динамический c объект:

var RequestMessage = "{}";
dynamic d = JsonConvert.DeserializeObject(RequestMessage);
d.Request = JsonConvert.SerializeObject(new { A = 42 });
d.RequestOptions = JsonConvert.SerializeObject(new { B = 22 });

var name = "SomeMore";
d[name]=11;

RequestMessage = JsonConvert.SerializeObject(d);

{"Request":"{\"A\":42}","RequestOptions":"{\"B\":22}","SomeMore":11}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...