Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否将属性动态添加到json字符串?_C#_.net_Json.net - Fatal编程技术网

C# 是否将属性动态添加到json字符串?

C# 是否将属性动态添加到json字符串?,c#,.net,json.net,C#,.net,Json.net,我需要动态地向json字符串添加一些属性。以下是我正在使用的代码: // set as empty json object RequestMessage = "{}"; dynamic d = JsonConvert.DeserializeObject(RequestMessage); d.Request = JsonConvert.SerializeObject(request); d.RequestOptions = JsonConvert.SerializeObject(requestOp

我需要动态地向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,然后将其序列化回json字符串

如果我知道属性的名称就可以了,在本例中,它们是Request和RequestOptions

问题是:如果属性名是一个变量,有没有办法做到这一点?例如,类似于:

private string GetJson(string name, object obj)
{
    // name is "Request"
    // object is request
    ......
    return RequestMessage;
}
可能吗*我使用的是.net+newton json


谢谢

当然,您可以向动态对象动态添加属性:

var RequestMessage=“{}”;
动态d=JsonConvert.DeserializeObject(RequestMessage);
d、 Request=JsonConvert.SerializeObject(新的{A=42});
d、 RequestOptions=JsonConvert.SerializeObject(新的{B=22});
var name=“SomeMore”;
d[名称]=11;
RequestMessage=JsonConvert.Serialized对象;


为什么要使用
dynamic
?只需使用
字典
,不要使用
动态
。Json.NET用于Json对象的具体类型是
JObject
,因此请使用它。见:。上面提到的字典也可以使用。其目的是动态地向对象添加属性(对象从json字符串转换),然后将其转换回json字符串。您可以在运行时向
字典
作业对象
添加项。谢谢,dbc。如果您添加它作为答案,我将接受它。为什么使用
dynamic
而不是
Dictionary
JObject
?在这种情况下
d
实际上是
JObject
{"Request":"{\"A\":42}","RequestOptions":"{\"B\":22}","SomeMore":11}