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

时间:2016-11-07 17:51:43

标签: c# json amazon-dynamodb

我正在尝试将JSON值上传到AWS Dynamo,当我上传具有""的任何属性的值时,它看起来像是给我一个400型错误。作为价值观。我写的应用程序是一个C#应用程序。

删除任何有价值""的键的最佳方式是什么?我已经看过如何删除空值,但我不确定这是否适用。

说:

{myObj: { x: "", y: "test str" }, myStr: "hello world!"}

变为:

{myObj: { y: "test str" }, myStr: "hello world!"}

2 个答案:

答案 0 :(得分:3)

如果您使用的是Newtonsoft's 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!"}

答案 1 :(得分:0)

如果您不希望将其应用于每个单个字段,则可以将以下内容添加到您希望在为空的情况下忽略的字段。

[DefaultValue("")]
[JsonProperty(NullValueHandling = NullValueHandling.Ignore, 
DefaultValueHandling = DefaultValueHandling.Ignore)]