c# - 使用动态属性名称将数据序列化为 json 字符串

标签 c# json.net

我有一个接受键和值的方法。两个变量都可以有动态内容。

key => 是一个动态字符串,可以是任何东西,例如“上次发送日期”
value => 是一个对象,它可以是任何东西,例如"2014-10-10"

由于键是动态值,例如“LastSentDate”或传递给方法的任何键,因此我希望 json 属性是键字符串的值,而不是字面上的键本身...

public void SetRowVariable(string key, object value)
{
    var obj = new { key = value }; // key property is literally taken maybe anonym object is not a good idea?
     string jsonString = JsonConvert.SerializeObject(obj);

    // jsonString should have that output => "{ "LastSentDate": "2014-10-10" }"
}

我必须如何序列化获得所需输出的 ​​obj?

“key”属性也必须有可能包含特殊字符,如“!”§$%&/()=?"`

我很遗憾地使用 .NET 3.5。

最佳答案

您可以使用 JObject(在 Newtonsoft.Json.Linq 中):

var obj = new JObject();
obj[key] = JToken.FromObject(value);

string jsonString = obj.ToString();

关于c# - 使用动态属性名称将数据序列化为 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26874014/

相关文章:

c# - 有没有更有效的方法来查找 Sql server 中的重复项

c# - 直观显示两个文件之间差异的方法?

c# - 编写好的 C# 等于方法

c# - 在unity3D中显示数学方程

c# - MVVM - 我应该公开 ReadOnlyObservableCollection、ReadOnlyCollection、ICollection 等吗?

c# - 当前几个 JSON 项具有非十进制值时,将动态 JSON 反序列化为 DataTable 会丢失小数

c# - 如果是 JSON.NET,我应该为可选字段设置任何属性吗

formatting - JSON.Net 将 XML 序列化为 JSON 驼峰式案例

c# - 当使用自定义契约(Contract)解析器而不是 JsonConverter 属性时,自定义 JsonConverter 被忽略以进行反序列化

c# - Newtonsoft JSON 动态属性名称