Reputation: 6615
I need to add some properties to a json string dynamically. Here is the code I'm using:
// 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);
This can add Request and RequestOptions to d, then serialize d back to json string.
It works fine if I know the properties' names, in this case, they are Request and RequestOptions.
Question is: is there a way to do this IF the property name is a variable? for example, something like:
private string GetJson(string name, object obj)
{
// name is "Request"
// object is request
......
return RequestMessage;
}
Is it possible? *I'm using .net + newton json.
thanks
Upvotes: 2
Views: 5473
Reputation: 3660
Sure, you can add properties dynamically to a dynamic object:
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}
Upvotes: 2