如何在复杂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!"}

如何在复杂json对象中删除空字符串json值

如果您正在使用Newtonsoft的Json。. NET库,您可以使用JsonSerializerSettingsDefaultValue属性:

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)]