2016-11-07 257 views
2

我想將JSON值上傳到AWS Dynamo,當我上傳具有任何屬性值的值時,它看起來像是給我一個400型的錯誤。我正在編寫的應用程序是一個C#應用程序。如何刪除複雜的json對象中的空字符串json值?

刪除任何具有「」值的鍵的最佳方法是什麼?我已經看到如何刪除空值,但我不確定這適用。

說:

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

變爲:

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

什麼是去除方法null值,爲什麼邏輯不能從'obj.x == null'更改爲'obj.x == string.Empty'? – Stephen

+0

我不想要string.Empty,就是這樣。我需要刪除整個密鑰 – Abarnett

+0

我沒有進行賦值,我只是問爲什麼用於刪除空值的邏輯不能被修改以刪除匹配'string.Empty'的屬性。 – Stephen

回答

1

如果您正在使用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!"}