urlreader
urlreader

Reputation: 6615

Add property dynamically to a json string?

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

Answers (1)

Dmitry Ledentsov
Dmitry Ledentsov

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

Related Questions