基于提供的值在 C# 中动态创建 JSON 对象
Posted
技术标签:
【中文标题】基于提供的值在 C# 中动态创建 JSON 对象【英文标题】:Dynamically creating a JSON object in C# based on provided values 【发布时间】:2021-12-29 18:19:10 【问题描述】:我正在尝试根据提供给我的值动态创建 JSON 对象。
第一个场景 - 我拥有所有的价值观
string param1 = "Hey";
string param2 = "Bye";
string param3 = "Later";
我会像这样导出我的 Json:
private string BuildJson (string param1, string param2, string param3)
//Passed values for example
//param1 = "Hey";
//param2 = "Bye";
//param3 = "Later";
object jJson = new
VALS= new
val1 = param1,
val2 = param2,
val3 = param3
;
return JsonConvert.SerializeObject(jJson );
这很好用。但是,现在我试图找到一种方法来创建这个相同的 JSON 对象,而不知道哪个参数将具有值。如果没有价值,那么我不希望我的 jJson 拥有该属性。
例如
private string BuildJson (string param1, string param2, string param3)
//Passed values for example
//param1 = "Hey";
//param2 = null;
//param3 = "Later";
//Since param2 is NULL, I would NOT want to have it all together in my JSON like below
object jJson = new
VALS= new
val1 = param1,
val3 = param3
;
return JsonConvert.SerializeObject(jJson );
有没有另一种方法可以像这样动态创建 JSON?谢谢。
【问题讨论】:
这能回答你的问题吗? Add Properties to anonymous type only if they are not null C# 【参考方案1】:由于这是Newtonsoft,因此只需包含NullValueHandling = NullValueHandling.Ignore
给定
private static string BuildJson(string param1, string param2, string param3)
object jJson = new
VALS = new
val1 = param1,
val2 = param2,
val3 = param3
;
return JsonConvert.SerializeObject(jJson,
Formatting.Indented,
new JsonSerializerSettings()
NullValueHandling = NullValueHandling.Ignore
);
用法
var result = BuildJson("asd", null, "sdf");
Console.WriteLine(result);
输出
"VALS":
"val1": "asd",
"val3": "sdf"
免责声明:我会推荐 Text.Json
用于任何未开发的开发,并且还会劝阻您不要使用这样的匿名类型,而是使用实际的具体模型。
【讨论】:
免责声明。谢谢。以上是关于基于提供的值在 C# 中动态创建 JSON 对象的主要内容,如果未能解决你的问题,请参考以下文章