Periods in the name of c# dynamic ExpandoObjects?

2019-02-25 22:29发布

问题:

Maybe this is a silly question, but I'm working on a project that wants me to generate some JSON that looks like this:

{'action.type':'post', 'application':APP_ID}

In C#, I'm trying to create this "action.type" attribute, with the value of "post". How would I do that? Here's how I've typlically been creating stuff like:

dynamic ActionSpec = new ExpandoObject();
ActionSpec.SomeParam = "something";
ActionSpec.id = 12345;

I can't go "ActionSpec.action.type", because that will not output the desired "action.type". Does this make sense? Thanks!

回答1:

You could try populating it via the dictionary:

IDictionary<string, object> expandoDictionary = ActionSpec;
expandoDictionary["action.type"] = "post";

However, I wouldn't be at all surprised if it rejected that as an invalid identifier.



回答2:

Using Json.Net

JObject jObj = new JObject();

jObj["action.type"] = "post";
jObj["application"] = "APP_ID";

var json = jObj.ToString();