如何在复杂json对象中删除空字符串json值
本文关键字:json 删除 字符串 对象 复杂 | 更新日期: 2023-09-27 18:16:53
我试图将JSON值上传到AWS Dynamo,当我上传具有"作为值的任何属性的值时,它看起来像是给了我一个400类型的错误。我正在编写的应用程序是一个c#应用程序。
删除值为"的键的最好方法是什么?我已经看到了如何删除空值,但我不确定这是否适用。
说:
{myObj: { x: "", y: "test str" }, myStr: "hello world!"}
就变成:
{myObj: { y: "test str" }, myStr: "hello world!"}
如果您正在使用Newtonsoft的Json。. NET库,您可以使用JsonSerializerSettings
和DefaultValue
属性:
public class Rootobject
{
public Myobj myObj { get; set; }
public string myStr { get; set; }
}
public class Myobj
{
[DefaultValue("")]
public string x { get; set; }
[DefaultValue("")]
public string y { get; set; }
}
var originalSerializedObject = "{myObj: { x: '"'", y: '"test str'" }, myStr: '"hello world!'"}";
var deserializedObject = JsonConvert.DeserializeObject<Rootobject>(originalSerializedObject);
var serializerSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore
};
var newSerializedObject = JsonConvert.SerializeObject(deserializedObject, serializerSettings);
Console.WriteLine(newSerializedObject);
//{"myObj":{"y":"test str"},"myStr":"hello world!"}
如果您不希望将其应用于每个字段,则可以在字段中添加以下内容,以便在为空时忽略。
[DefaultValue("")]
[JsonProperty(NullValueHandling = NullValueHandling.Ignore,
DefaultValueHandling = DefaultValueHandling.Ignore)]