Как удалить пустую строку значений json в сложном объекте json?


Я пытаюсь загрузить значения JSON в AWS Dynamo, и похоже, что это дает мне ошибку типа 400, когда я загружаю значения, которые имеют какие-либо свойства С "" в качестве значений. Приложение, которое я пишу, - это приложение C#.

Как лучше всего удалить ключи, имеющие значение ""? Я видел, как удалить нулевые значения, но я не уверен, что это применимо.

Скажите:

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

Становится:

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

1 ответ:

Если вы используете 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!"}